Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   UpJump: Q&A :) (https://javascript.ru/forum/misc/14421-upjump-q.html)

UpJump 23.01.2011 17:57

<script>
var x = 5.4444444444444444449
var y = 5.6785069743950934609
x = x.toFixed(2);
y = y.toFixed(2);
x=x-0;
y=y-0;
document.write("Первое число : " +x+"<br>");
document.write("Второе число : " +y+"<br>");
var result = x+y;
document.write("Сумма : "+result);
</script>

Сумма выходит не совсем такая какая ожидается. Насколько я понимаю происходит округление. Как тут быть? Сумма-то не совпадает.:blink: Есть ли альтернативное "верное" решение?

x-yuri 23.01.2011 18:12

Цитата:

Сообщение от UpJump
x=x-0;y=y-0;

происходит преобразование строки в формат IEEE 754. При сложении тоже могут иметь место потери точности. Округление не происходит

Цитата:

Сообщение от UpJump
Как тут быть?

в данном сферическом случае, никак

UpJump 23.01.2011 18:22

Ясно. Слушай x-yuri, ты уже второй раз говоришь о "сферическом". А что это значит? Так для саморазвития.:)

Sweet 23.01.2011 19:02

Цитата:

Сообщение от UpJump
А что это значит? Так для саморазвития.

Я слышал анекдот про движение сферического коня в вакууме, но не помню его:)

Aetae 23.01.2011 19:05

http://lurkmore.ru/Сферический

UpJump 23.01.2011 19:57

как можно стопроцентов получить рандомное число с количеством цифр после десятичной точки к примеру 2?
То есть число.xx?
toFixed() не дал результата(выше спрашивал).
Пробывал так.
var x = (Math.random() - Math.random())*100;
x = (x.toString().substr(0,4))-0;

тоже ничего.

Aetae 23.01.2011 20:05

var max=100
alert( (Math.random()*max).toFixed(2) )

UpJump 23.01.2011 20:12

Нет. ты не понял. Я задавал вопрос выше на этой странице.http://javascript.ru/forum/misc/1442...html#post89307
Если я сделаю вычитание одного такого числа из другого то не всегда получу "правильный" результат.Надеюсь понятно.:)

Aetae 23.01.2011 20:20

Дык всё равно toFixed на резульат.

UpJump 23.01.2011 20:24

нет. меня интересует только чистое число с двумя цифрами после точки. Посмотри пример что я тебе указал. там результат не тот какой хотелось бы. А именно нужен 11.12.


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