/ / Чи можна додати флоат до подвійного? - java

Чи можна додати поплавок до подвійного? - java

Наш викладач попросив нас пошукати це, і те, що я продовжував отримувати з мережі, - це пояснення, вказуючи, що означає подвійний і плаваючий.

Чи можете ви сказати мені, чи можна це чи ні, і пояснити, чому чи ні?

Відповіді:

4 для відповіді № 1

Проста відповідь: так, але тільки якщо double не надто великий.

float"s є одноточність числа з плаваючою комою, тобто вони використовують 23-бітову мантису та 8-бітний показник, що відповідає ~ 6/7 с.ф. точність і ~ 10 ^ 38 діапазон.

double"s є подвійна точність - з 52-бітною мантисою та 11-бітовим показником, що відповідає ~ 14/15 с.ф. точність і ~ 10 ^ 308 діапазон.

Оскільки подвійні "s" мають більший діапазон, ніж floats, додавання float до дуже великий подвійний зводить нанівець ефекти плаваючого потоку (так званий underflow). Звичайно, це може статися і для двох типів подвійних.

https://en.wikipedia.org/wiki/Floating_point


2 для відповіді № 2

Чи можете ви додати два числа з різними знаками після коми (наприклад, 432.54385789364 + 432.1)? Так, ти можеш.

У Java це та сама ідея.

Від Уроки Java:

  • поплавок: Тип даних з плаваючою є одноточною 32-бітовою плаваючою точкою IEEE 754. Діапазон значень виходить за межі даного обговорення, але зазначений у розділі Типи, формати та значення з плаваючою комою в Специфікації мови Java. Як і у випадку з рекомендаціями щодо байтів і коротких, використовуйте плаваючу (замість подвійної), якщо вам потрібно зберегти пам’ять у великих масивах чисел з плаваючою комою. Цей тип даних ніколи не слід використовувати для точних значень, таких як валюта. Для цього вам потрібно буде використовувати клас java.math.BigDecimal. Numbers and Strings охоплює BigDecimal та інші корисні класи, що надаються платформою Java.

  • подвійний: Тип подвійних даних - це 64-розрядна плаваюча точка IEEE 754 з подвійною точністю. Діапазон значень виходить за межі даного обговорення, але зазначений у розділі Типи, формати та значення з плаваючою комою в Специфікації мови Java. Для десяткових значень цей тип даних, як правило, є типовим вибором. Як зазначалося вище, цей тип даних ніколи не повинен використовуватися для точних значень, таких як валюта.

В основному, вони обидва є власниками десяткових знаків. Вони відрізняються від того, наскільки точними вони можуть бути. A float може бути тільки 32 біт за розміром, порівняно з a double який 64 біти за розміром. A float може мати точність приблизно до 5 або 6 чисел з плаваючою комою, і a double може мати точність приблизно до 10 чисел з плаваючою комою.

В основному ... а double може зберігати десятковий знак краще, ніж a float... але займає більше місця.


Щоб відповісти на ваше запитання, ви можете додати float до a double і навпаки. Як правило, результат буде перетворено на double, і вам доведеться відкинути його назад до float якщо це те, що ти хочеш.


1 для відповіді № 3

Якщо ви хочете бути по-справжньому глибоким у цьому, вам слід сказати так, це можливо завдяки примусовому значенню, але це відкриває двері для більш серйозних помилок точності, які непомітно накопичуються для компілятора. плавати має суттєву точність, ніж подвійний і, на жаль, це тип буквальних чисел із плаваючою комою за замовчуванням у джерелі Java. На практиці обов’язково використовуйте д суфікс на літералах, щоб переконатися, що вони є подвійний якщо вам доведеться використовувати плаваючу крапку.

Ці помилки точності можуть призвести до серйозної шкоди і навіть до втрати життя в чутливих системах.

Правильно використовувати плаваючу крапку, тому, якщо це можливо, слід уникати. Одна надзвичайно очевидна річ, щоб не робити, що зазвичай помилково роблять, - представляти валюту як плавати або подвійний. Це може призвести до того, що реальні гроші будуть ефективно передані або вкрадені у людей.

Плаваюча точка (віддаючи перевагу подвійний) підходить для приблизних розрахунків тадеякі високопродуктивні наукові обчислювальні програми. Однак все ще надзвичайно важливо знати про характеристики втрат точності, особливо коли отримане значення з плаваючою точкою подається в подальші розрахунки з плаваючою точкою.

Це в цілому лідирує в числових обчисленнях, і тепер я справді пішов з місця :)

SAS має пристойний документ про це: http://support.sas.com/resources/papers/proceedings11/275-2011.pdf