- 1
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Или я мандаринов переел, или от этого портал должен открыться
dsfix 27.12.2018 17:00 # 0
Тогда:
"Цел" лишнее, и не понятно для чего так мудрёно.
valchara 27.12.2018 17:23 # 0
Нафига вся эта мистика?
dsfix 27.12.2018 17:48 # 0
valchara 27.12.2018 18:16 # 0
Внезапно под 2019 поменялась математика. И кого-то ждет сюрприз, при мутном стечении цифр, который охеуеешь ловить отладчиком.
Dummy00001 28.12.2018 03:00 # 0
LOL. Это стандартный метод в *С/С++* для того что бы мусор из double значений подчищать. После многочисленых делений/умножений/этц, там начинает гавно после >7 знака после запятой накапливатся. Если даблы вот так не подчищать - с топорной конвертацией в целое число - то после большого количества операций могут появится неожиданные ошибки.
Про применимость к 1С (или базам с ихними NUMBER) не в курсе.
bormand 28.12.2018 07:41 # 0
Ну а что ты хотел от двоичной экспоненты и мутной разрядности?
valchara 28.12.2018 08:57 # 0
Это вообще кусок древней глобальной функции для округления денежных величин. Используется более 835 раз в разных местах. Нахуя там появился элемент внезапной лотереи с блэкджеком и экспонентами мне непонятно. От этого у меня бомбит и за вариантами сюда пришел.
Функция глОкругление(Сумма, ДатаДок = "") Экспорт
Сумма = Цел(Окр(Сумма * 1000, 0, 1)) / 1000;
Точность=2;
Если ПустоеЗначение(ДатаДок) = 0 Тогда
Если ДатаДок < глДатаДеноминации Тогда
Точность = 0;
КонецЕсли;
КонецЕсли;
Возврат Окр(Сумма, Точность, 1);
КонецФункции
Dummy00001 28.12.2018 19:14 # 0
1. Я сказал что не знаю что там в 1С.
2. От тюрьмы до от сумы не зарекайся. Даже SQL умеет даблы. (И 1С сидит поверху базы, я догадываюсь.) Я видел нечищеные даблы в/из базы туды сюды один к одному переливались. (И ни одна из Тоадов/Тулзов не показывала double'ы с полной точностью - почему народ почти 2 месяца убил на поиск источника проблемы.)
В том случае было все совсем плохо: подсчёт налогов (смешные числа типа 13% или 16%) + кастомер хотел что бы числа с более высокой точностью чем нужно хранились (типа, не 2 знака (центы), а 5 знаков).
kir_rik 28.12.2018 19:20 # −105
OCETuHCKuu_nemyx 02.03.2019 15:01 # −1
qpjll-oc 02.03.2019 18:28 # −102
bormand 28.12.2018 07:24 # +1
Это режим округления так задается? Наглядненько.
Morgoth 28.12.2018 07:45 # +1
guest8 28.12.2018 07:46 # −999
Morgoth 28.12.2018 09:01 # 0
valchara 28.12.2018 09:05 # 0
bormand 28.12.2018 09:11 # +1
А вот англоговорящим они очевидны - пол и потолок.
Morgoth 28.12.2018 10:20 # 0
Morgoth 28.12.2018 10:53 # +3
Morgoth 28.12.2018 10:55 # 0
pohuinho 03.03.2019 00:01 # 0
cmepmop 03.03.2019 00:44 # 0
errorg 27.02.2019 09:33 # 0
После чего станет понятно, почему именно так.
upd. Не, что-то затупил. Все нормально :)
guest8 28.12.2018 03:23 # −999
guest8 28.12.2018 03:33 # −999
guest8 28.12.2018 03:50 # −999
guest8 28.12.2018 03:50 # −999
guest8 28.12.2018 04:01 # −999
Morgoth 28.12.2018 05:26 # 0
guest8 28.12.2018 05:30 # −999
Morgoth 28.12.2018 05:31 # 0
Steve_Brown 28.12.2018 11:10 # 0
Нет, ну, можно, конечно, написать int n = 14.88; , а потом сказать "Ага!" и пойти дальше валить лес тяжелыми железными топорами, но смысл?
Morgoth 28.12.2018 11:32 # +1
Именно поэтому я за фиксед
guest8 28.12.2018 12:33 # −999
Morgoth 28.12.2018 12:40 # 0
guest8 28.12.2018 12:51 # −999
Morgoth 28.12.2018 12:56 # 0
Сосут: ryby, tcl, python.
Morgoth 28.12.2018 12:59 # +1
Гороскоп на 2019 год:
рыбы сосут.
Morgoth 28.12.2018 13:05 # 0
рыбы сосут губу
kir_rik 28.12.2018 19:22 # −102
rajluTo3Huk 28.12.2018 19:24 # 0
roman-kashitsyn 28.12.2018 13:05 # +1
https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/