Олег Б.
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 лет назад
Еще подсказали: Math.round
Олег Б.
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, +++