Я не знаю, чому f або F ставиться після значень з плаваючою комою в Java чи інших мовах? наприклад,
float fVariable = 12.3f;
будь-які функції, крім вказівки, що це плаваюче значення?
Я не знаю, чому f або F ставиться після значень з плаваючою комою в Java чи інших мовах? наприклад,
float fVariable = 12.3f;
будь-які функції, крім вказівки, що це плаваюче значення?
Відповіді:
за замовчуванням 12.3- doubleбуквальний, тому сказати компілятору, щоб він поводився з ним floatявно -> він використовує fабоF
Вбачаючи, що у вашій програмі існує лише стільки способів представити число, дизайнерам Java довелося вибирати і призначати кожну форму найпоширенішому випадку використання. Для тих форм, які вибрані за замовчуванням, суфікс, що позначає точний тип, необов’язковий.
Отже, коли ви вводите 12свою програму, це int літерал, на відміну від 12L, який є довгим . І коли ви вводите 12.3, це подвійний літерал, на відміну від 12.3F, який є флоат .
То де це актуально? В першу чергу при обробці знижених даних або звуженні конверсій. Кожного разу, коли ви знижуєте long до int або double до float, існує можливість втрати даних. Отже, компілятор змусить вас вказати, що ви дійсно хочете виконати перетворення звуження, сигналізуючи про помилку компіляції приблизно для цього:
float f = 12.3;
Оскільки 12.3 являє собою дубль, вам потрібно явно передати його на плаваючу позицію (в основному, підписавшись при перетворенні звуження). В іншому випадку ви можете вказати, що число насправді плаваюче, використовуючи правильний суфікс;
float f = 12.3f;
Отже, резюмуємо, необхідність вказувати суфікс для longs і floats - це компроміс, який вибрали дизайнери мови, щоб збалансувати необхідність уточнення, що саме таке число, та гнучкість перетворення чисел з одного типу сховища на інший.
dнайкраще doubleпредставляти якусь числову величину x, воно float f=(float)dбуде найближчим floatдо деякого значення, яке знаходиться в межах частки на трильйон x, хоча для цього потрібна типова діаграма. На відміну від цього, якщо fнайкраще floatподання якогось числового значення x, double d=fне потребує типової діаграми, навіть якщо воно часто не наближається до найкращого doubleподання xі може бути відключене на сотні порядків . Я вважаю іронічним, що float f=(float)(1.0/10.0)потрібен акторський склад, але double d=1.0f/10.0fцього не потрібно.
floatі doubleможе надати лише приблизні значення подання для деяких значень. наприклад 12,3 або 0,1
Різниця полягає в тому, що поплавок не такий точний (оскільки він має меншу точність, оскільки менший)
напр
System.out.println("0.1f == 0.1 is " + (0.1f == 0.1));
System.out.println("0.1f is actually " + new BigDecimal(0.1f));
System.out.println("0.1 is actually " + new BigDecimal(0.1));
відбитки
0.1f == 0.1 is false
0.1f is actually 0.100000001490116119384765625
0.1 is actually 0.1000000000000000055511151231257827021181583404541015625
Так само 0.1є найближче представництво в doubleі 0.1fє найближчим представництвом уfloat
float fVariable = 12,3; добре. але коли ви використовуєте лише плаваюче значення (без будь-якого ідентифікатора) у будь-якому виразі, тоді вам потрібно сказати компілятору, що значення є плаваючим, тому ми використовуємо суфікс "f" після значення. приклад
float fl = 13f / 5f;
тут 13 і 5 - плаваючі значення.
У Java ми маємо багато різних типів базових змінних, тому, щоб зробити це загальним, він має деякі функції за замовчуванням. Як, якщо ми вводимо вхід 16.02, він автоматично приймає його як подвійний вхід. Отже, якщо ви хочете вказати його як плаваючий, ми згадуємо після цифри 'f' або ми можемо просто використовувати:
float f = (float) 16.02;
або
float f = 16.02f;
Таким же чином ми повинні згадати 16 л, якщо ми хочемо, щоб номер зберігався як довгий тип, інакше він автоматично вибере тип за замовчуванням, тобто тип int.
Float - це 32-розрядна плаваюча крапка IEEE 754 з однією точністю, а Double - 64-бітна плаваюча точка IEEE 754 з подвійною точністю. Коли ви використовуєте значення з десятковою комою, а якщо не вказали значення 0,23f (зокрема, плаваюче), Java ідентифікує його як подвійне.
Для десяткових значень подвійний тип даних, як правило, вибір за замовчуванням, прийнятий Java. Перевір це
Якщо ви не використовуєте f, він буде інтерпретований як подвійний, що є типовим для Java. Ви також можете написати це так ##
float f=(float) 32.5956; float f=32.5956f;