Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.02.06;
Скачать: CL | DM;

Вниз

Округление дробных чисел   Найти похожие ветки 

 
Кирей   (2010-11-10 09:43) [0]

Как округлить число например 1,444445 до 1,45? пробовал RoundEx, RoundTo, SimpleRoundTo, FloatToStrF, все функции округляют до 1,44, неужели строку разбирать?


 
sniknik ©   (2010-11-10 09:51) [1]

> 1,444445 до 1,45?
ни математическим ни бухгалтерским округлением здесь не пахнет... пахнет желанием странного.


 
Кирей   (2010-11-10 10:01) [2]

А чему ж меня тогда в школе учили?


 
sniknik ©   (2010-11-10 10:03) [3]

глупостям всяким наверное, серьезно, вот покажи этот пример своему математику, и спроси почему не научил правильно.


 
Jeer ©   (2010-11-10 10:30) [4]


> Как округлить число например 1,444445 до 1,45?


Если очень хочется странного, то
x := 1.444445;
s := Format("%.2f",[x+0.005])

Будет визуально округлять 1.4 <= x < 1.45


 
RWolf ©   (2010-11-10 10:50) [5]


> Кирей   (10.11.10 10:01) [2]

В школе учат округлять как раз до 1.44.


 
12 ©   (2010-11-10 11:34) [6]


> Как округлить число например 1,444445 до 1,45?

округлить до 1,44445
округлить до 1,4445
округлить до 1,445
округлить до 1,45


 
Дмитрий Белькевич   (2010-11-10 12:24) [7]

Как говорил наш физхимик, в своё время, вот из-за таких потом Чернобыли и взрываются. Говорил как раз по поводу округления.


 
Nickolay   (2010-11-11 08:02) [8]


> 12 ©   (10.11.10 11:34) [6]
>  
> округлить до 1,44445
> округлить до 1,4445
> округлить до 1,445
> округлить до 1,45

Если отбрасываемая цифра - 5, то остающаяся младшая цифра должна быть приведена к ближайшей четной цифре. Например:
1,445 -> 1,44
1,435 -> 1,44
1,45 -> 1,4
1,35 -> 1,4
Это еще, говорят, древние греки придумали.


 
sniknik ©   (2010-11-11 08:07) [9]

> Это еще, говорят, древние греки придумали.
это называется бухгалтерское округление, минимизируем ошибку округления при составлении больших отчетов. (чем больше цифр складывается для суммы отчета, тем более действенно)  
а древние греки, они что цену на рис поштучно считали?


 
Nickolay   (2010-11-11 08:16) [10]

Про древних греков слышал, но точно не скажу - они или не они.

Да, а 9, конечно, превращаем в 0 и округляем с избытком:

1,495 -> 1,50
1,95 -> 2,0

А ошибка минимизируется, потому что четных и нечетных цифр одинаковое количество - по 5 штук. И если все они появляются равновероятно, то округления с избытком и недостатком гасят ошибки друг друга. В принципе, точно также можно было бы округлять и до ближайшей нечетной цифры, но в бухгалтерии, действительно, традиционно принято до четной.


 
12 ©   (2010-11-11 09:08) [11]

не скажу за древних, не знаком
не скажу за бухов, среди них знакомых у меня не более, чем древних греков

а в школе учили

> Если отбрасываемая цифра - 5

то +1 надо.


 
И. Павел ©   (2010-11-11 09:14) [12]

> [0] Кирей   (10.11.10 09:43)

Кстати, если вам все же потребуется бухгалтерское округление, то используйте этот модуль: http://cc.embarcadero.com/Item/21909 , т.к. стандартное дельфийское округление может работать не так, как ожидается.


 
Anatoly Podgoretsky ©   (2010-11-11 09:18) [13]

> Nickolay  (11.11.2010 08:02:08)  [8]

Потому что у них были деньги.


 
Anatoly Podgoretsky ©   (2010-11-11 09:22) [14]

У нас бухгалтеры и налоговики не заморачиваются, как программа посчитала, так и правильно, и не волнует, что в Экселе другие результаты, кого волнуют полкопейки, когда на конвертации валюты погрешность вообще огромная.


 
Nickolay   (2010-11-11 09:41) [15]

Правильно, а зато если вумный хакер будет эту неучитываемую полкопейку себе
сбрасывать, то будет приличные бабки колотить-заколачивать.


 
Плохиш ©   (2010-11-11 11:54) [16]


> Nickolay   (11.11.10 09:41) [15]
>
> Правильно, а зато если вумный хакер будет эту неучитываемую
> полкопейку себе
> сбрасывать, то будет приличные бабки колотить-заколачивать.
>

Были такие в истории, камера для хитропопого тоже была найдена.


 
Dennis I. Komarov ©   (2010-11-11 14:09) [17]


> Nickolay   (11.11.10 09:41) [15]
> Правильно, а зато если вумный хакер будет эту неучитываемую
> полкопейку себе
> сбрасывать, то будет приличные бабки колотить-заколачивать.

Сказки для непонимающих, потому как не вумный, ибо все там прозрачно...


 
Anatoly Podgoretsky ©   (2010-11-11 14:23) [18]

> Nickolay  (11.11.2010 09:41:15)  [15]

Сказки не рассказывай.


 
Олег Крапривин   (2010-11-11 19:53) [19]

Мне один раз пришлось сталкнуться с подобной проблемой. Столбик из 60-ти(или около того) цифр. А сумма не сходится! На копейки правда, но программа не шла. Мне пришлось преобразовывать вещественные числа в строки, урезать их, а потом преобразовывать их обратно. Задача была сдана!

Если в Дельфи есть подобные функции, пожалуйста в студию, хотя это не функции Дельфи, а Паскаля(начиная от версии 3.0)


 
Ой   (2010-11-12 05:20) [20]

Правильно! Долой математику!!!... ужас, куда катимся....


 
Dennis I. Komarov ©   (2010-11-12 17:42) [21]


> Мне один раз пришлось сталкнуться с подобной проблемой.
> Столбик из 60-ти(или около того) цифр. А сумма не сходится!
>  На копейки правда, но программа не шла. Мне пришлось преобразовывать
> вещественные числа в строки, урезать их, а потом преобразовывать
> их обратно. Задача была сдана!

Значит не так складывал, т.е. ошибка в программе. А ошибка из-за неправильного представления хранения чисел вещественного типа.


 
Jeer ©   (2010-11-12 17:45) [22]


> Олег Крапривин   (11.11.10 19:53) [19]


Надо было в уме складывать, потом бы просто вводил результат.


 
Anatoly Podgoretsky ©   (2010-11-12 18:18) [23]

> Jeer  (12.11.2010 17:45:22)  [22]

Профессиональное решение.


 
Inovet ©   (2010-11-15 11:18) [24]

> [19] Олег Крапривин   (11.11.10 19:53)
> Если в Дельфи есть подобные функции, пожалуйста в студию

Не совсем в Делфи

> [12] И. Павел ©   (11.11.10 09:14)
> http://cc.embarcadero.com/Item/21909

и совсем не Делфи округляет "неправильно".



Страницы: 1 вся ветка

Текущий архив: 2011.02.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.003 c
15-1287138691
xayam
2010-10-15 14:31
2011.02.06
Чего выбрать из SSD?


6-1233683745
Xandr
2009-02-03 20:55
2011.02.06
Почта


15-1283595848
Jee
2010-09-04 14:24
2011.02.06
Запустить одну процедуру несколькими потоками


15-1287779340
Юрий
2010-10-23 00:29
2011.02.06
С днем рождения ! 23 октября 2010 суббота


2-1290065729
DoKZ
2010-11-18 10:35
2011.02.06
Indy TCP Client Server (Delphi 7)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский