VEXcode Pro V5'te Float ve Double Değişkenler Oluşturma

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Ondalık basamaklı sayıları tutan türler – float, double

Bu veri türlerine genellikle kayan nokta veri türleri adı verilir. Sayılara kayan noktalı sayıları denir.

kayan nokta fvar = 50,15;
çift dvar = 50,0;

Kayan nokta veri türünü karşılaştırın – float ve double

Float ve double veri türleri arasındaki fark tamamen ondalık basamakların sayısındaki hassasiyetle ilgilidir.

VexOS- ARM 7 spesifikasyonuna, float 6 veya 7 basamağı, double ise 15 veya 16 basamağı işleyebilir.

float: Mevcut V5o'larda, denetleyici 8'e kadar ondalık basamağa kadar hassasiyete izin veriyor gibi görünüyor.

Örneğin

float fvar1 = 1.12345670;
float fvar2 = 1.12345678;

fval1, fvar2'den farklıdır,

vs

float fvar1 = 1.123456780; 
float fvar2 = 1.123456781;

fval1, fvar2 ile aynı şekilde değerlendirilecektir.

double: 17 ondalık basamağa kadar hassasiyete izin verir.

Örneğin

çift ​​değişken 1 = 1.12345678912345678;
çift değişken 2 = 1.12345678912345670;

dval1 dvar2'den farklıdır,

vs

çift ​​değişken 1 = 1.123456789123456789;
çift değişken 2 = 1.123456789123456780;

dval1, dvar2 ile aynı şekilde değerlendirilecektir.


Yüksek hassasiyete ihtiyacınız yoksa "double" kullanmayın

Yüksek hassasiyete ihtiyacınız olmadığı sürece "çift" kullanmamanızın iki nedeni vardır:

  1. 2X float tipini kaplar.
  2. Çok daha yüksek işlem gücü gerektirir.

VexOS- ARM 7 spesifikasyonunafloat 6 veya 7 basamaklı, double ise 15 veya 16 basamaklı işlem yapabilir. Her iki durumda da, double veya float'taki son rakamların doğruluğuna güvenmemelisiniz. "Kayan nokta hesaplaması" (bu makalenin kapsamı dışındadır) adı verilen bir şey nedeniyle "int" depolamaktan çok farklı şekilde depolanır.

Bu nedenle son birkaç ondalık basamağın doğruluğunu kaybedebilirsiniz.

Double işlemi, float işlemine kıyasla oldukça maliyetlidir ve kayan nokta hesaplamaları adı verilen bir şey nedeniyle "tamsayı" işleminden çok daha yüksektir.

IEEE standardına göre aşağıdakiler daha güvenilir bir aralıktadır.

Tip En Küçük Pozitif Değer En Büyük Pozitif Değer Hassasiyet sayısı
batmadan yüzmek 10 -38 x 1.17549 10 38 x 3.40282 6 rakam
çift 10 -308 veya 2.22507 10 308 x 1.79769 15 rakam

İlkel veri tiplerini birbiriyle değiştirebilir misiniz? - Döküm

Veri türlerini değiştirmek mümkündür. Bu tekniğe “Döküm” denir. Döküm oldukça yaygın bir uygulama olsa da, bunu yalnızca gerekliyse yapın. 

En yaygın uygulamalardan biri char ve int'i değiştirmektir.

Bunun nedeni, her ikisinin de bir istisna dışında tam sayı değerlerini temsil etmesidir: 

  • “int” 4 bayt (veya bazı derleyicilerde 8 bayt) içerir
  • “char” yalnızca 1 bayt içerir.

Yani örneğin

karakter aVal = 100;
int iVal = aVal; // örtülü atama

veya

int iVal = (char) aVal; // Açık tür dönüştürme.

Örtülü kesmeye karşı uyarı:

Örneğin

#include "vex.h"

using namespace vex;

int main() {
  // Robot Konfigürasyonunun Başlatılması. ÇIKARMAYIN!
  vexcodeInit();

  int iVal = 128;
  karakter aVal = (karakter) iVal; // KÖTÜ!!!  aVal yalnızca -128 ile 127 arasında değer alabilir.

}
Bir diğer yaygın uygulama ise int ve float'ı değiştirmektir
kayan nokta fVal = 5,486;
kayan nokta = fVal - (int)fVal; //şunu yapar: 5,486 - 5

Örtülü kesmeye karşı uyarı:

Örneğin

int iVal = 50;
float fVal = iVal / 100;

şimdi fVal = 0,0, 0,5 DEĞİL.

Bazı senaryolarda genellikle operasyonların önemli bir parçası olan örtülü kesmeden faydalanmak kesinlikle iyidir. Ancak bu tekniği tasarım gereği kullandığınızdan emin olmanız gerekir.

Örtülü kesmenin gerçekleşmesini istemiyorsanız, açık atama yapmanız gerekir:

  • örtülü dönüşüm: float fVal = iVal / 100,0;
  • açık atama: float fVal = (float) iVal / 100

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: