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.
Типи, які містять числа з десятковими знаками – float, double
Ці типи даних часто називають типами даних з плаваючою комою. Числа називаються числами з плаваючою комою.
float fvar = 50,15;
подвійний двар = 50,0;
Порівняйте типи даних із плаваючою комою – float і double
Різниця між типом даних float і double полягає в точності кількості десяткових знаків.
Згідно зі специфікацією VexOS – ARM 7, тип float може обробляти 6 або 7 знаків, а тип double — 15 або 16.
float: у поточному V5os контролер, здається, допускає до 8 знаків після коми.
напр
float fvar1 = 1.12345670;
float fvar2 = 1.12345678;
fval1 відрізняється від fvar2,
проти
float fvar1 = 1.123456780;
float fvar2 = 1.123456781;
fval1 буде оцінено так само, як fvar2.
double: допускає до 17 знаків після коми з точністю.
напр
подвійний двір1 = 1.12345678912345678;
подвійний двір2 = 1.12345678912345670;
dval1 відрізняється від dvar2,
проти
подвійний двір1 = 1.123456789123456789;
подвійний двір2 = 1.123456789123456780;
dval1 буде оцінено так само, як dvar2.
Не використовуйте "подвійний", якщо вам не потрібна висока точність
Є дві причини, чому вам не слід використовувати "double", якщо вам не потрібна висока точність:
- Він займає 2X плаваючий тип.
- Він займає набагато вищу обчислювальну потужність.
Згідно зі специфікацією VexOS – ARM 7, тип float може обробляти 6 або 7 місць, а тип double — 15 або 16. У будь-якому випадку не слід покладатися на точність останніх цифр у double або float. Воно зберігається зовсім по-іншому, ніж зберігання «int» через те, що називається «обчислення з плаваючою комою» (що виходить за межі цієї статті).
Таким чином, ви можете втратити точність в останніх кількох знаках після коми.
Операція з подвійним числом є досить дорогою порівняно з float і набагато дорожчою, ніж «ціле число» через обчислення з плаваючою комою.
На основі стандарту IEEE наступне знаходиться в більш надійному діапазоні.
| Тип | Найменше додатне значення | Найбільше додатне значення | # Точність |
|---|---|---|---|
| поплавок | 10 -38 x 1,17549 | 10 38 x 3,40282 | 6 цифр |
| подвійний | 10 -308 або 2,22507 | 10 308 x 1,79769 | 15 цифр |
Чи можете ви обмінюватися примітивними типами даних? - Кастинг
Можливий обмін типами даних. Ця техніка називається «Кастинг». Хоча кастинг є досить поширеною практикою, робіть це лише в разі необхідності.
Однією з найпоширеніших практик є обмін char та int.
Це тому, що обидва вони представляють цілі значення за одним винятком:
- «int» містить 4 байти (або 8 байтів у деяких компіляторах)
- "char" містить лише 1 байт.
Так, напр
char aVal = 100;
int iVal = aVal; // неявне приведення
або
int iVal = (char) aVal; // явне приведення типів.
Застереження щодо неявного скорочення:
напр
#include "vex.h"
using namespace vex;
int main() {
// Ініціалізація конфігурації робота. НЕ ВИДАЛЮВАТИ!
vexcodeInit();
int iVal = 128;
символ aVal = (char) iVal; // ПОГАНО!!! aVal може містити лише значення від -128 до 127.
}Іншою поширеною практикою є обмін int і float
float fVal = 5,486;
float fraction = fVal - (int)fVal; //це: 5,486 - 5
Застереження щодо неявного скорочення:
напр
int iVal = 50;
float fVal = iVal / 100;
тепер fVal = 0,0, а НЕ 0,5.
Абсолютно добре використовувати переваги неявного скорочення, яке часто є важливою частиною операцій у деяких сценаріях. Однак вам потрібно переконатися, що ви використовуєте цю техніку задумом.
Якщо ви не бажаєте, щоб мало місце неявне скорочення, вам потрібно виконати явне приведення:
- неявне приведення:
float fVal = iVal / 100.0; - явне приведення:
float fVal = (float) iVal / 100