Си++ тип float (давно хотелось спросить, чо за фигня)
В двоичном виде, мантисса*2^экспонента
Соответственно, мантисса округляется по степеням двойки, а не десятки:
3/10 = 0.0(1001) ~ 0.10011001100110011001100 * 2^(-1) = 0.2999999523162842
это сибилдер Используй FloatToStrF, тогда округлится как надо.
ага, спасибо!
у них 16 значащих цифр, для повседневных задач хватает (float-а - не хватает).
и да, FloatToStr(F) - это буэ. sprintf наше всё
Оставить комментарий
markyzz
тупой, конечно, вопрос... но у меня слегка внутреннее напряжение, когда на вот такой код:он выдает: 2.29999995231628
и так со всеми флоатами
в общем хз... из-за чего такая фигня происходит и, может как-то избавиться от нее можно?
раздражает...
Никто не знает?