![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Bastet |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 26.9.2005 Где: Тильзит Репутация: нет Всего: 6 |
Не знаю, у всех ли такие глюки, но на одном моем друге проверено.
Просто методом алерт получаю:
Мне-то лично такие его кульбиты параллельны... Но пишу вот обработчик формы (вычисление на основе введенных данных), перед заказчикам и будущими пользователями неудобно. Можно ли это обойти цивилизованно (а не тупой проверкой на проблемные значения)? И если можно, то как? --------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
К сожалению нельзя конечным количеством бит представить любое число.
Числа с пл. точкой на самом деле съэмитированы. Поэтому подобные неточности вообще не зависят от языка программирования, а являются особенностью нашего железного цифрового друга. Обойти.... ну разве что написать свой класс чисел. И выполнять арифметические операции столбиком. Но вот беда мы и там не застрахованы. Хотя...
Только операции с целыми числами дают точные результаты (пока мы не вышли за границы определённые количеством бит, используемых для хранения этого числа..) Добавлено @ 23:08 Ссори за тупизну с parseInt просто на скорую руку не вспомню, как в целое число преобразовать плавающее ... |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
parseFloat? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
неа parseFloat это строку в дес. дробь.
А надо дес. дробь в целое число (просто обрезать нули). В С++ и Java: double a=5.6; int g=(int)a; |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
>>>как в целое число преобразовать плавающее
>>>А надо дес. дробь в целое число Противоречишь сам себе 8)) |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Одно из фундаментальных свойств дробных чисел: между двумя различными числами всегда существует третье, отличное от первых двух. Реализовать это не реально по определению, память конечна)
В JS, как в прочем почти везде, дробные числа представляються 64 битным числом, состоящим из знакового бита, мантиссы и экспоненты. Об этом много раз говорилось на форуме и даже в JS При вычислениях дробные числа содержаться в 80 битных регистрах, т.е. точности хватает. После полученное число сохраняеться в 64 битное значение, при этом теряем в точности, получая максимально приближенное значение. parseInt и parseFloat использовать не нужно, юзаем toFixed(<число знаков после запятой>);
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Bastet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 26.9.2005 Где: Тильзит Репутация: нет Всего: 6 |
Как преобразовать одно число в другое найду по справочнику...
Ясно одно: красивого пути решения проблемы нет. sergej.z, наверное, так и придется. Нужно для интереса попробовать в других языках умножать 3 на 0.7 --------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
можно и не пробовать Вот, точностью можешь вариировать. Параметр к toFixed - число занаков после запятой в наиболее "длинном" числе. Делить в конце ессно надо на 10 в степени это количество. Думаю разберёшься и так
|
||||
|
|||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |