Freecodecamp: Проблема с точным изменением Проблема

Созданный на 4 авг. 2016  ·  5Комментарии  ·  Источник: freeCodeCamp/freeCodeCamp

Название испытания

https://www.freecodecamp.com/challenges/exact-change

Описание проблемы

У меня возникла проблема с этой проблемой из-за неточных расчетов при работе со значением «0,01». Иногда возвращаемое значение расчета имело неправильное значение после 7 или 8 знаков после запятой (например, 1.01 - 0.01 = 0.999999996).
У кого-нибудь была подобная проблема?
Мне удалось решить эту проблему, но все же мне потребовалось много времени, чтобы сделать это из-за этой проблемы, которой не должно быть ... Кто-нибудь знает, почему это так. Я считаю, что это связано с тем, что js сохраняет целочисленные и плавающие значения ...

Информация о браузере

  • Имя браузера, версия: Google Chrome, 52.0.2743.82 (64-разрядная версия)
  • Операционная система: Linux Ubuntu 16.04
  • Мобильный, настольный компьютер или планшет: ноутбук

Ваш код


Скриншот

help wanted

Самый полезный комментарий

Привет, @FatKoala. Вы можете прочитать все об арифметике с плавающей запятой (и хороших способах ее обработки) здесь и в других местах в Интернете.

И забавный факт: JavaScript не делает различия типов между числами с плавающей запятой и целыми числами. 1 и 1.00000 - это одно и то же число в JS (хотя это не является строго причиной ошибок точности с плавающей запятой, с которыми вы столкнулись).

Возможно, стоит включить ресурс об арифметике с плавающей запятой (хотя и не обязательно тот, который я связал выше) в полезные ссылки по этой задаче, поскольку она, вероятно, первая, которая требует от пользователей понимания проблем точности, которые она вызывает.

cc @ FreeCodeCamp / модераторам задач за отзывы о добавлении такой ссылки (и какую ссылку добавить)

Все 5 Комментарий

Привет, @FatKoala. Вы можете прочитать все об арифметике с плавающей запятой (и хороших способах ее обработки) здесь и в других местах в Интернете.

И забавный факт: JavaScript не делает различия типов между числами с плавающей запятой и целыми числами. 1 и 1.00000 - это одно и то же число в JS (хотя это не является строго причиной ошибок точности с плавающей запятой, с которыми вы столкнулись).

Возможно, стоит включить ресурс об арифметике с плавающей запятой (хотя и не обязательно тот, который я связал выше) в полезные ссылки по этой задаче, поскольку она, вероятно, первая, которая требует от пользователей понимания проблем точности, которые она вызывает.

cc @ FreeCodeCamp / модераторам задач за отзывы о добавлении такой ссылки (и какую ссылку добавить)

Да, это очень интересная тема, и ИМХО ее стоит затронуть.

В JavaScript есть только числовой тип данных, который равен number и обычно это 64-битная числа с плавающей запятой (с учетом того, как браузеры (точнее, JS Engine) реализуют их).

Отметим это как «Помощь, которую нужно кому-то в сообществе, чтобы связать хороший ресурс». Я тоже попробую поискать, но да, лучше, если это будет от кого-то, кто, возможно, является экспертом по языку.

Спасибо за ссылку, это было полезно ... я действительно расстроился из-за проблемы, пока писал код ... теперь в этом есть смысл ... Я согласен, что это должно быть где-то связано или объяснено ранее, что такие вещи происходят ...

Я немного покопался , и ссылка

@dhcodes, пожалуйста, продолжайте: wink:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги