PDA

Просмотр полной версии : Хранение float в памяти



МихаилВА
03.06.2016, 18:42
Товарищи программисты.
Почему так?
(int)( (0.1 + 0.5 )*10 ) = 6
(int)( (0.1 + 0.6 )*10 ) = 7
(int)( (0.1 + 0.7 )*10 ) = 7

1C_Hater
01.11.2018, 11:52
Разве не должно быть так?!

(int)( (0.1 + 0.5 )*10 )

Действие 1: складываем 0.1 + 0.5 получаем 0.6 ("по дефолту" имеем тип double);
Действие 2: умножаем на 10, получаем 6.0 (тип все еще double)
Действие 3: "кастим" (преобразовываем) в тип int, получается 6 (а не 6.0).


Никакого float'а тут нет. Если хотите литерал для float, то используйте суффикс f (можно заглавную): 6f или 6.0f

P.S. Поздно посмотрел на дату темы. Может кому еще пригодится...