Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   1092*0.15=? А на javascript? Как это объяснить бухгатеру? (https://javascript.ru/forum/misc/5506-1092%2A0-15%3D-na-javascript-kak-ehto-obyasnit-bukhgateru.html)

oid 20.10.2009 00:34

1092*0.15=? А на javascript? Как это объяснить бухгатеру?
 
Накопилась пара интересных эффектов при использовании "великого и могучего". Может кто-нибудь подскажет как это забороть или убедит, что так, мол, и должно быть.

Эффект первый в заголовке. Почему только в .js это выражение дает результат равный 163.79999999999998?

Эффект второй. Так никто не делает (можно просто отнять 0), но все же: parseInt("01") вернет 1, parseInt("02") вернет 2 и т.д. до parseInt("08") вернет ... нет не 8. Так же как и parseInt("09")...

Octane 20.10.2009 00:51

http://javascript.ru/basic/types#number

oid 20.10.2009 10:26

Octane, спасибо, но как жить дальше с неточными вычислениями :(

ZoNT 20.10.2009 12:48

http://www.webmaster.ee/javascript/J....html#parseInt

Kolyaj 20.10.2009 13:36

Я вот только не понял, зачем бухгалтеру это объяснять?

e1f 20.10.2009 14:27

oid, попробуйте 10.92*15 ;)

Riim 20.10.2009 14:35

Цитата:

Сообщение от oid
но как жить дальше с неточными вычислениями

хранить все цифры в виде строк и вручную делать некоторые операции (вспоминаем как в школе методом столбика умножали/делили).

oid 20.10.2009 16:40

Да чего уж "некоторые операции столбиком", похоже все арифметические как минимум... Это мега-круто... нет слов...
"А что Вы делаете?"
"Да тут компьютер немного неточно 0.1+0.2 вычисляет, надо библиотечку дописать..."
"Да идите вы нах.р со своим компьютером, web-технологиями и прочей х...й "
Ради прикола наберите в поисковике "javascript калькулятор", потестите результаты, я плакаль :(

Riim 20.10.2009 20:37

В некоторой степени это есть во всех языках программирования.

x-yuri 21.10.2009 05:34

практически во всех, потому что так считает процессор и для всего, кроме финансовых расчетов, это подходит


Часовой пояс GMT +3, время: 07:45.