МихаилВА
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. Поздно посмотрел на дату темы. Может кому еще пригодится...
Powered by vBulletin™ Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot