JAVA SCRIPT проблема с вычислением
292 сообщения
#14 лет назад
Столкнулся с проблемой вычеслений в java script - из-за плавающей точки выводится не верное значение.Например:
(1-0.9)*1000 - возвращает 99.99999999999997 вместо 100.
Проблема описывается тут: ссылка
Но, не могу понять, как ее регить? Округлять через ceil или floor не приводит к нужным результатам..
55 сообщений
#14 лет назад
Думаю, делать так - перед вычислением все числа выражения умножать на 10 х наибольшее кол-во цифр после точки,
затем, результат делить на это число - например,
(1-0.9)*1000
1*10 = 10
0.9*10 = 9
(10-9)*1000 = 1000
1000/10 = 100
Можно будет функцию написать, которая всё это делать будет
292 сообщения
#14 лет назад
Цитата ("wellwit"):Думаю, делать так -
перед вычислением все числа выражения умножать на 10 х наибольшее кол-во цифр после точки,
затем, результат делить на это число - например,
(1-0.9)*1000
1*10 = 10
0.9*10 = 9
(10-9)*1000 = 1000
1000/10 = 100
Можно будет функцию написать, которая всё это делать будет
да, подошло, спасибо
11416 сообщений
#14 лет назад
var priceaction=Math.round((1-percentvalue)*pricevalue);
292 сообщения
#14 лет назад
Цитата ("Hungry_Hunter"):Код:
1var priceaction=Math.round((1-percentvalue)*pricevalue);
))))
3195 сообщений
#14 лет назад
Цитата ("bel0v"):Еще подсказали: Math.round
нет нет нет
вот это:
Цитата ("wellwit"):
Думаю, делать так -
перед вычислением все числа выражения умножать на 10 х наибольшее кол-во цифр после точки,
затем, результат делить на это число - например,
(1-0.9)*1000
1*10 = 10
0.9*10 = 9
(10-9)*1000 = 1000
1000/10 = 100
Можно будет функцию написать, которая всё это делать будет
лучше!
и код больше, и внушительнее, и начальнику показать потом не стыдно, и такой код потом ещё сжимать можно - одни плюсы!
11416 сообщений
#14 лет назад
Цитата ("AlekartRu"):и код больше, и внушительнее, и начальнику показать потом не стыдно, и такой код потом ещё сжимать можно - одни плюсы!
Ахаха, откуда у вас столько юмора?


99 сообщений
#14 лет назад
Цитата ("wellwit"):Думаю, делать так -
перед вычислением все числа выражения умножать на 10 х наибольшее кол-во цифр после точки,
затем, результат делить на это число - например,
(1-0.9)*1000
1*10 = 10
0.9*10 = 9
(10-9)*1000 = 1000
1000/10 = 100
Можно будет функцию написать, которая всё это делать будет
ой как забавненько то

AlekartRu, +++
