Почему trunc, а не round?Потому что round округляет по правилам математики:
Ну что же. Увы, но это проблемы с точностью округления. Конечно это баг, но такой тонкий, что им вряд ли кто-то будет заниматься.Если это баг, то почему он проявляется не всегда??
Так что или переходи на roundВ предыдущем посте написал, что в "нездоровом блоке" с round происходит то же самое.
или используй в формулах что-то такое: trunc((val1+fuzz)/val2) (например, fuzz = 1e-6):(
Ну и ещё для убедительности, что в таком виде использовать trunc нельзя ни в коем случае (!!!):Ну так, я бы подстроился, если бы баг был статическим, а получается какой-то генератор случайного округления - иногда так срабатывает, иногда иначе, потом вдруг блок начинает работать как нужно, а через некоторое время снова шляпа (бывают даже случаи, когда ctrl+z решало данную проблему, то есть вот ставишь размер, обновляешь поле, баг, делаешь шаг назад, ставишь тот же размер - все ок :D - на самом деле, это не так и смешно >:().
1) Ты моё второе видео смотрел?Я все Ваши видео по два раза смотрю!
2) Ты понимаешь, что если trunc(4399.9999999999999/100) даёт 43, то тебе эта функция не годиться?А Вы понимаете, что с round то же самое?
3) Там происходят различные арифметические операции над числами плавающей арифметики. Любые операции приводят к потере точности. Соответственно в реальности у тебя не 4400, а что-то около этого. И как результат потеря точности при операции truncВопрос из предыдущего поста, почему они происходят по-разному и случайно? Я не понимаю! Вы смотрели мое видео "Чудеса с функцией trunc"?
Ну так, я бы подстроился, если бы баг был статическим, а получается какой-то генератор случайного округленияПрибавляй 1e-6 - всё будет нормально. И лучше даже так: trunc((val1/val2)+1e-6)
То есть мне ничего не годится, кроме костыля с 1e-6.Им и пользуйся - другого нет и не будет. Это проблема плавающей арифметики. Кстати, уже не раз обсуждавшаяся на этом форуме. И вылезает она в разных местах. В данном случае в полях.
Прибавляй 1e-6 - всё будет нормально. И лучше даже так: trunc((val1/val2)+1e-6)Кажется, это один из самых тяжелых моментов в жизни.