1092*0.15=? А на javascript? Как это объяснить бухгатеру?
Накопилась пара интересных эффектов при использовании "великого и могучего". Может кто-нибудь подскажет как это забороть или убедит, что так, мол, и должно быть.
Эффект первый в заголовке. Почему только в .js это выражение дает результат равный 163.79999999999998? Эффект второй. Так никто не делает (можно просто отнять 0), но все же: parseInt("01") вернет 1, parseInt("02") вернет 2 и т.д. до parseInt("08") вернет ... нет не 8. Так же как и parseInt("09")... |
|
Octane, спасибо, но как жить дальше с неточными вычислениями :(
|
|
Я вот только не понял, зачем бухгалтеру это объяснять?
|
oid, попробуйте 10.92*15 ;)
|
Цитата:
|
Да чего уж "некоторые операции столбиком", похоже все арифметические как минимум... Это мега-круто... нет слов...
"А что Вы делаете?" "Да тут компьютер немного неточно 0.1+0.2 вычисляет, надо библиотечку дописать..." "Да идите вы нах.р со своим компьютером, web-технологиями и прочей х...й " Ради прикола наберите в поисковике "javascript калькулятор", потестите результаты, я плакаль :( |
В некоторой степени это есть во всех языках программирования.
|
практически во всех, потому что так считает процессор и для всего, кроме финансовых расчетов, это подходит
|
x-yuri,
а почему для финансовых-то не пожходит? Это в расчете интеграла с мелким шагом нужна точность, а ТС'у хватит (1092*0.15).toFixed(2) |
e1f,
денег потом не досчитаешься. Во всех программах для денег используют специальный тип данных, считающий с точностью до двух знаков. |
И первое и второе число, в моем случае вводит бухгалтер, точность и первого и второго может быть до 4 знаков после запятой. Проблему временно обошел приведением исходных чисел к целым, после выполнения операции восстанавливаю дробную часть... Но осадок остался...
|
Идея отсюда:
http://www.petting-zoo.org/Calculator.html |
а еще можно ajax-запрос отправлять на сервер, сервер-то умеет точно считать, в крайнем случае можно mysql попросить :lol:
и еще вот |
про ajax на каждое изменение фокуса ввода прикольно :lol:
|
Часовой пояс GMT +3, время: 18:26. |