- 1
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Или я мандаринов переел, или от этого портал должен открыться
Тогда:
"Цел" лишнее, и не понятно для чего так мудрёно.
Нафига вся эта мистика?
Внезапно под 2019 поменялась математика. И кого-то ждет сюрприз, при мутном стечении цифр, который охеуеешь ловить отладчиком.
LOL. Это стандартный метод в *С/С++* для того что бы мусор из double значений подчищать. После многочисленых делений/умножений/этц, там начинает гавно после >7 знака после запятой накапливатся. Если даблы вот так не подчищать - с топорной конвертацией в целое число - то после большого количества операций могут появится неожиданные ошибки.
Про применимость к 1С (или базам с ихними NUMBER) не в курсе.
Ну а что ты хотел от двоичной экспоненты и мутной разрядности?
Это вообще кусок древней глобальной функции для округления денежных величин. Используется более 835 раз в разных местах. Нахуя там появился элемент внезапной лотереи с блэкджеком и экспонентами мне непонятно. От этого у меня бомбит и за вариантами сюда пришел.
Функция глОкругление(Сумма, ДатаДок = "") Экспорт
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Точность=2;
Если ПустоеЗначение(ДатаДок) = 0 Тогда
Если ДатаДок < глДатаДеноминации Тогда
Точность = 0;
КонецЕсли;
КонецЕсли;
Возврат Окр(Сумма, Точность, 1);
КонецФункции
1. Я сказал что не знаю что там в 1С.
2. От тюрьмы до от сумы не зарекайся. Даже SQL умеет даблы. (И 1С сидит поверху базы, я догадываюсь.) Я видел нечищеные даблы в/из базы туды сюды один к одному переливались. (И ни одна из Тоадов/Тулзов не показывала double'ы с полной точностью - почему народ почти 2 месяца убил на поиск источника проблемы.)
В том случае было все совсем плохо: подсчёт налогов (смешные числа типа 13% или 16%) + кастомер хотел что бы числа с более высокой точностью чем нужно хранились (типа, не 2 знака (центы), а 5 знаков).
Это режим округления так задается? Наглядненько.
А вот англоговорящим они очевидны - пол и потолок.
После чего станет понятно, почему именно так.
upd. Не, что-то затупил. Все нормально :)
Нет, ну, можно, конечно, написать int n = 14.88; , а потом сказать "Ага!" и пойти дальше валить лес тяжелыми железными топорами, но смысл?
Именно поэтому я за фиксед
Сосут: ryby, tcl, python.
Гороскоп на 2019 год:
рыбы сосут.
рыбы сосут губу
https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/