double
и особенно float
типы опасны.Эти числа представляют собой систему счисления с основанием 2, поэтому невозможно представить 0.24F
непосредственно как то же самое, что невозможно представить 1/3
в десятичной системе без повторяющегося десятичного периода, т.е. 1/3=0.3333...
или 0.(3)
.
* 1008.* Таким образом, число с плавающей запятой
0.24F
при печати в десятичном представлении отображается как
0.23
с изменением из-за округления:
println(0.24F) => 0.23999999463558197021484375
, в то время как 0.25F
может быть показано непосредственно:
println(0.25F) => 0.25
Итак, отвечая на ваш вопрос: это зависит.Для 0.25, 0.5, 0.75 нормально использовать double.
Но класс FastMoney использует не арифметику с плавающей точкой , а арифметику с фиксированной точкой