Округление больших ("длинных") чисел, большим количеством знаков после запятой. #766664


#0 by DjMah
Всем приветы. Столкнулся с проблемкой: После определенных вычислений получается ооочень длинное число с большим количеством знаков после запятой. Результат округления стандартным способом до двух знаков получается не верным (из 100% в каких то вычислениях получается 92%, в каких-то 109%). Подскажите способ. Есть вариант делать округление с последнего знака в числе, и так до ножного разряда округлять. Может есть какой-нить способ попроще? Заранее спасибо, всех с весной и с раздевающимися девушками.
#1 by Lama12
Пример пожалуйса.
#2 by DjMah
1,23704159 1,70538824 1,827494366 0,580618726 0,580618726 0,580618726 1,234992829 1,671788568 1,843064946 0,858020897 1,234992829 0,842040565 0,842040565
#3 by DjMah
Все не стал приводить числа, но вот такие результаты получаются. Это число в процентах из 100% возможных.
#4 by lubitelxml
что сделать то надо?
#5 by LordCMEPTb
Как вариант, можно сначала производить расчеты, а затем округлять полученное число, а не округлять числа сначала, а затем производить расчеты.
#6 by Lama12
В результатах округления получается так? 1,24 1,71 1,83 0,58 0,58 1,23 1,67 1,84 0,86 1,23 0,84 0,84 Это классическое математическое округление. Округлять с последнего знака в числе - глупо. Может набежать статистическая ошибка намного превышающая погрешность при классическом округлении. Есть еще финансовые и другие виды округлений. Какой нужен?
#7 by DjMah
Округлить каким-то способом, чтобы вот такие числа в сумме дали результат, как можно ближе к 100. Сейчас получаются расхождения большие. У меня так и есть. Сначала расчеты, потом округление.
#8 by DjMah
Да, такие получаются. Я не слышал про другие виды округлений (простите за необразованность) Нужен вариант который даст на выходе более точный результат.
#9 by Lama12
Похоже я не совсем понял задачу. Смущают проценты. Правильно ли я понимаю что сумма полученного результата из сравнивается с суммой из ?
#10 by ЧеловекДуши
Округляй до 10-ти значков. В итоге округляй до 2-ух. В общей картине получишь погрешность 0.01.
#11 by ЧеловекДуши
Классический ...-изм округления и попыткой удивляться откуда разница :)
#12 by ЧеловекДуши
Можно округлить вообще, что бы было 100. Последний процент подгоняешь под 100, если он превышает :)
#13 by ЧеловекДуши
Вот любопытно, с каких пор процент можно складывать? :)
#14 by DjMah
Хммм... Это все результат расчета процентов из 100. Грубо говоря, количество (процентов) голосов, зависимых от жилплощади по отношению к общей площади здания. Подгонять последний - айайайай!! =))
#15 by эксвилл
Округление - это уменьшение точности. По определению. Если нужна большая точность - не округляй.
#16 by LordCMEPTb
Не совсем понял, т.е. сумма чисел из должна стремиться к 100, но она не получается, потому что какое-то округление числа дает от 0.92 до 1.09? Может дело в том, что исходные данные не подразумевают в сумме давать 1?
#17 by Lama12
Понятно. Обычно поступаю двумя способами. 1. Распределяю накопившуюся погрешности пропорционально величине значения из конечного множества. Т.е. в нашем случае всю погрешность можно кинуть на величины 1.86, 1.83, 1.71 и т.д. в зависимости от паранои (можно только на 1.86). 2. Распределить округленные величины использовать как показатели доли для распределения первоначальной суммы алгоритмом пропорционального распределения (в УПП мне очень понравился алгоритм).
#18 by DjMah
Я не спорю. Нужно чтобы это уменьшение было как можно меньше (простите за тавтологию)) Сложно сформулировать, дефчонки забили все сознание. в только пример чисел из которых должно получится 100, но в результате округления 100 не получается =)) Спасибо, попробую второй способ применить.
#19 by Lama12
Это алгоритм...
#20 by Serg_1960
Имхо, у автора классическая безнадёжная попытка поймать копейку в ведомости с "ИТОГО" - сумма округлений значений не равна округлению суммы значений :)
#21 by DjMah
Спасибо! Попробую сейчас. Я не пытаюсь поймать копейку, я лишь спросил как можно уменьшить погрешность при округлении длинных чисел.
#22 by batman69
А может вам и не нужно округлять, вы работайте с числом "1,234992829 ", а пользователю показывайте "1,24", ему достаточно для понимания процента.
#23 by Serg_1960
#24 by Мэс33
как сказали выше - везде работаете с точными данными (9 знаков после запятой как я понял). Округляете в самом конце.
#25 by Мэс33
а разницу - в карман
#26 by LordCMEPTb
Понятнее не стало. Если есть 3 числа: 0.33333 0.33333 0.33334 То в сумме они дают 1. Как ни округляй. Но если их сначала округлить до 2 знаков, а затем сложить, то получим 0.99, а не 1. Потому, если числа должны давать 100%, а не дают, то надо либо складывать исходные числа, а затем округлять, либо увеличивать каждое число на определенный коэффициент, чтобы подогнать общую сумму к 100%.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С