Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Корректное округление вещественных чисел (https://javascript.ru/forum/misc/2552-korrektnoe-okruglenie-veshhestvennykh-chisel.html)

Бобр 14.01.2009 15:50

Корректное округление вещественных чисел
 
Корректное округление вещественных чисел

G = 0.0012345
G.toFixed(2)

Выводит результат в 0.00, а нужна функция которая выводит не 2 цифры после запятой, а две ЗНАЧАЩИЕ цифры после запятой, то есть 0.0012 она должна вывести, а не 0.00 .

Есть такая функция или самому надо писать?

Kolyaj 14.01.2009 16:02

Самому.

Бобр 14.01.2009 16:12

Неужели никто ещё не написал?
Функция toFixed вообще бесполезная. Только вводит в заблуждение.

x-yuri 14.01.2009 16:16

во многих языках вроде так и реализовано: либо через экспоненту, либо фиксированное количество знаков после запятой
p.s. toFixed очень хорошо соответствует своему названию - выводит фиксированное количество знаков после запятой

Kolyaj 14.01.2009 16:18

Цитата:

Сообщение от Бобр
Неужели никто ещё не написал?

Если кому надо было, тот, вероятно, написал.

Цитата:

Сообщение от Бобр
Функция toFixed вообще бесполезная. Только вводит в заблуждение.

Чем она, интересно, в заблуждение вводит?

ZoNT 14.01.2009 16:32

G = 0.0012345
alert(G.toPrecision(2))

Бобр 14.01.2009 17:15

ZoNT,
Спасибо! Помогло!

Удивительно, вообще, сколько на свете дураков любящих давать советы. :)

x-yuri 14.01.2009 17:21

а тебя, БобрДобр, не смущает, что
G = 0.00000012345;
alert(G.toPrecision(2));

выдаст 1.2e-7?

ZoNT 14.01.2009 17:41

Цитата:

Сообщение от x-yuri (Сообщение 10713)
а тебя, БобрДобр, не смущает, что
G = 0.00000012345;
alert(G.toPrecision(2));

выдаст 1.2e-7?

А тебя не смущает, что
G = 0.00000012345;
alert(G);

выдаст 1.2345е-7 ???

x-yuri 14.01.2009 17:49

Бобру нужна была функция, которая выдает две ЗНАЧАЩИЕ цифры после запятой, как-то результат 1.2e-7 не очень вписывается в картину
и почему меня 1.2345е-7 должен смущать?

Андрей Параничев 14.01.2009 18:00

x-yuri,
А вы посчитайте:
1.2345е-7 = 0.00000012345
1.2e-7 = 0.00000012

ZoNT 14.01.2009 18:03

потому что функция выдала 2 значащие цифры, просто представляет число 0.00000012 как 1.2е-7. Что тебя смущает - непонятно. Результат достигнут. Топикстартер не просил текстового вывода один-в-один, он просил
Цитата:

Сообщение от Бобр
Корректное округление вещественных чисел

Если так надо представить в виде 0.00000012 - то не проблема преевести 1.2е-7 к такому виду.

x-yuri 14.01.2009 18:05

я понимаю, что toPrecision выдает результат с заданной точностью. Если автор под "2 ЗНАЧАЩИЕ цифры после запятой" подразумевал 1.2e-7, то наверное я просто забыл включить telepat mode( по-крайней мере, я не один так понял вопрос
p.s. в общем автор был "преимущественно" не понят

ZoNT 14.01.2009 18:16

Это говорит о том, что у меня "понималка" лучше развита или как?

x-yuri 14.01.2009 18:19

скил телепата лучше прокачан ;-) это скорее больший опыт общения в форумах, лучшее понимание логики топикстартеров, имхо))

ZoNT 14.01.2009 18:21

да, на htmlbook такие вопросы иногда задают... Да и тут тоже бывают весёлые вопросы...

Kolyaj 14.01.2009 18:21

Цитата:

Сообщение от Бобр
Удивительно, вообще, сколько на свете дураков любящих давать советы.

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


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