Почему то 10000*0.01 я получаю не 100 а 99.999999. А если мне надо допустим сложить 101 раз 0.275 я получаю 27.77547. Как мне округлить именно до 27.775 или начинаю плюсовать 0+1.5 100 раз и оно каким то чудом начинает выдавать эти дибильные девятки, а если я захочу потом вычесть 100 раз оно мне конечное число вообще выдает ужасное -6.240606е-05, а должно быть 0. Как с эти бороться ?.....В общем я даже не знаю, что с этим делать с циферками после запятой. С целыми то ладно можно округлить , а вот с этими даже не знаю че делать....

Принятый ответ

Потому что вы впервые столкнулись с double.
print(0.1+0.2==0.3) --> false
Почитать можете здесь. Примеры на других языках здесь.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
28
5 лет назад
2
Математика нормальная, просто нужно понимать, что компьютеры вещь не идеальная.
Советую погуглить про тип данных float. В Lua используется double, что в 2 раза лучше float.
Как бороться? Использовать округление до 2-4 знаков после запятой.
0
29
5 лет назад
Отредактирован nazarpunk
0
Потому что вы впервые столкнулись с double.
print(0.1+0.2==0.3) --> false
Почитать можете здесь. Примеры на других языках здесь.
Принятый ответ
0
28
5 лет назад
0
Загруженные файлы
0
29
5 лет назад
0
PT153, где-то мы уже это обсуждали))
0
5
5 лет назад
0
хорошо это все понятно, но как все такие быть если тебе приходиться очень много раз прибавлять у вычитать такие циферки к примеру 0.15 0.05, получается что в конце концов число уже получится не такое уж и хорошее, Вот только что сделал 2 цикла по 10000 раз и в одном прибавлял 0.3 в другом сразу же вычитал 0.3. По сути должно получиться 3000 и 0, ну какого 2999.393, а в другом -1.331043. Такое ощущение, что изначально лучше использовать целые числа в переменных плюсовать и вычитать, а перед каким то важным действием делить или умножать чтоб получить нормальное дробное число хоть и незначительными погрешностями, которые вообще не страшны. Иль у кого есть лучшее решение ? Товаришь говорил округлять до 2-4 знаков после запяткой. Чегото в луа я такого не нашел, знаю есть math.floor но он с целыми.
1
26
5 лет назад
1
Вот тут разбирали xgm.guru/p/100/230797
Такое ощущение, что изначально лучше использовать целые числа в переменных плюсовать и вычитать, а перед каким то важным действием делить или умножать чтоб получить нормальное дробное число хоть и незначительными погрешностями, которые вообще не страшны.
Самое то решение.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.