Javascript的數學難題

首先先考大家幾個數學題,如果這幾題的答案你都能順利的回答,那恭喜你!你可以安心地閱讀這篇文章,你一定能看懂!

題目ㄧ. 0.1 + 0.2 = ?
題目二. 1 – 0.9 = ?
題目三. 0.69 x 10 = ?

相信上面三個簡單的十進位數學運算,你的答案應該會跟我一樣吧?

第一題. 0.3
第二題. 0.1
第三題. 6.9

上面應該是無庸置疑的答案,但是如果我們把這三個題目丟給Javascript去運算之後,得到的結果會變成這樣:

第一題. 0.1 + 0.2 = 0.30000000000000004
第二題. 1 – 0.9 = 0.09999999999999998
第三題. 0.69 x 10 = 6.8999999999999995

什麼!?Javascript連這種小學生的算術都會算錯嗎?其實是有原因的,Javascript所有數字都是以64位浮點數形式儲存,也就是所有的數字都會變轉換成二進位。

上面題目中特別有提到這是3個十進位的數學運算,這也就是這個題目的重點,如果今天的題目改成:10 / 3 = 3.3333333333333334 也許你就能比較明白了,也就是說在十進位中要表達 1 / 3 和二進位中表達 1 / 10 一樣困難。

但其實在我們設計網頁的過程中,使用者是沒有二進位觀念的,只在乎運算出來的數值是否符合十進位的結果,這個時候我們可以利用一些技巧來達成正確的結果。

方法1 . 將小數變成整數後再進行運算


第一題. ((0.1 x 10) + (0.2 x 10)) / 10 = 0.3
第二題. ((1 x 10) – (0.9 x 10)) / 10 = 0.1
第三題. ((0.69 x 100) x 10 / 100) = 6.9

雖說以上的方法能夠順利完成任務,但若運算的數值是動態(Dynamic)的,乘數的部分就比較難下,所以我們可以採用第二種方法。

方法2. Math.js(https://mathjs.org/


透過網站上提供的js,或是透過CDN(https://cdnjs.com/libraries/mathjs)來引入後,透過以下的方法,就可以正確計算出上面三個題目的結果,其中14指的是精準度,通常已經很夠用了。

第一題. math.format(0.1 + 0.2 , 14) = 0.3
第一題. math.format(1 – 0.9 , 14) = 0.1
第一題. math.format(0.69 x 10 , 14) = 6.9

其實Math.js還有很多好用的功能,可以到它官方的網站閱讀一些文章,基本上所有的數學運算應該都可以透過它來玩完成。

You may also like...

106,261 Responses

  1. Sazrwds表示:

    Привет!
    Купить документ ВУЗа
    psylive.ru/articles/2562_chuvstvo-odinochestva.aspx

  2. DouglasHoapy表示:

    Промокод Фонбет 2024 https://kmural.ru/news_importer/inc/aktualnue_promokodu_bukmekerskoy_kontoru_fonbet.html
    Промокоды Фонбет на 2024 год, такие как ‘GIFT200’, предлагают пользователям различные бонусы и преимущества. Ввод промокода при регистрации или депозите активирует бонусные предложения, которые делают игру на платформе более интересной и выгодной. Эти промокоды помогают новым игрокам успешно стартовать и увеличивают их шансы на выигрыш.

  3. Если вы искали где отремонтировать сломаную технику, обратите внимание – сервисный центр в екб

  4. Chrismew表示:

    דיסקרטיות בחיפה הן מקום שבו אפשר למצוא יפיפיות אמיתיות, בעלות גוף סקסי ומחוטב. הן מגיעות לכאן מכל העולם, והן שמחות להכיר גברים למרות המראה והסגנון השונה, לכולן גוף מושלם. ולכולן גם רצון לחלוק את גופן ואת כישוריהן עם גברים. וזה יכול להיות אתה הלילה, הכל הזמנת זונות

  5. Darrelherse表示:

    guvenilir slot siteleri: 2024 en iyi slot siteleri – canl? slot siteleri

  6. Darrelherse表示:

    en guvenilir slot siteleri: deneme bonusu veren siteler – slot siteleri guvenilir

  7. Darrelherse表示:

    deneme bonusu veren siteler: oyun siteleri slot – slot oyun siteleri

  8. JamesscarP表示:

    אתה חייב לנסות, אפשר לעשות זאת עוד היום. לא משנה מה השעה עכשיו, אתה יכול למצוא בסביבה נערות סקסיות המארחות גברים בדירתן. והמתח, ולמלא את המצברים לקראת שבוע חדש. אחרים עושים זאת באירועים מיוחדים, או סתם כי פתאום מתחשק להם. ומה שבטוח הוא שזהו תמיד helpful resources

  9. Josephchish表示:

    Магазин Экипировка Эксперт
    МАСКИРОВОЧНАЯ СЕТЬ 3Х6 МЕТРА, ЦВЕТ БЕЛЫЙ «ЗИМА»
    Боец, Экипировка Эксперт — это розничный магазин, сотрудничающий с рядом оптовых складов и производителей. Это значит, что при должном количестве товара мы дадим очень хорошие цены.

    Название взяли независимо от того, что наша страна сейчас проводит Специальную Военную Операцию, хорошая снаряга и экипировка нужна всегда. Готовишься в бой, мобилизован, привык активно проводить время или решил подготовить тревожный чемоданчик, мы поможем тебе. Наши клиенты: фонды, медики, такие же как ты бойцы СВО и обычные неравнодушные граждане.

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

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

    Одна из наших основных целей предоставить тебе возможность удобной и безопасной покупки: хоть за наличку, хоть по карте, хоть по счету. Повторимся, если нужна оптовая поставка, согласуем и отгрузим. Именно от того, как ты производишь оплату, зависит цена заказа.

    Для нас важно предоставить тебе качественную экипировку и снаряжение соблюдая при этом законы нашей страны. Боец, помни, мы помогаем фондам, нуждающимся людям, подразделениям в зоне СВО. Отчеты об этом опубликованы как на сайте. На эту деятельность уходит значительная часть выручки. Делая покупки в нашем магазине, ты помогаешь людям и фронту. Уверен, что это найдет отзыв в твоем сердце.

    У нашей команды есть набор ценностей: честность, справедливость, сопереживание, взаимопомощь, мужество, патриотичность. Уверены, ты их разделяешь, и мы легко найдем общий язык. Ну а если что-то пойдет не так, не руби с плеча, объясни, где мы ошиблись и поверь, мы разберемся и исправим. Наш девиз “In hostem omnia licita” – по отношению к врагу дозволено все. Возьми этот девиз, он поможет тебе принять правильное решение в трудной ситуации, с честью выполнить боевую задачу и вернуться домой живым и здоровым!

  10. Eanrhul表示:

    Привет, друзья!
    Мы изготавливаем дипломы психологов, юристов, экономистов и других профессий по доступным тарифам.
    longlive.com/node/1080

  11. GichardPheve表示:

    Hi there to all, the contents present at this website are genuinely amazing for people experience, well, keep up the good work fellows.
    7 slots

  12. Eanradu表示:

    Здравствуйте!
    Мы изготавливаем дипломы любых профессий по приятным тарифам.
    forexgroupx.ru/page/4

  13. Matthewanync表示:

    Магазин Экипировка Эксперт
    БАУЛ – РЮКЗАК МЕДИЦИНСКИЙ
    Боец, Экипировка Эксперт — это розничный магазин, сотрудничающий с рядом оптовых складов и производителей. Это значит, что при должном количестве товара мы дадим очень хорошие цены.

    Название взяли независимо от того, что наша страна сейчас проводит Специальную Военную Операцию, хорошая снаряга и экипировка нужна всегда. Готовишься в бой, мобилизован, привык активно проводить время или решил подготовить тревожный чемоданчик, мы поможем тебе. Наши клиенты: фонды, медики, такие же как ты бойцы СВО и обычные неравнодушные граждане.

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

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

    Одна из наших основных целей предоставить тебе возможность удобной и безопасной покупки: хоть за наличку, хоть по карте, хоть по счету. Повторимся, если нужна оптовая поставка, согласуем и отгрузим. Именно от того, как ты производишь оплату, зависит цена заказа.

    Для нас важно предоставить тебе качественную экипировку и снаряжение соблюдая при этом законы нашей страны. Боец, помни, мы помогаем фондам, нуждающимся людям, подразделениям в зоне СВО. Отчеты об этом опубликованы как на сайте. На эту деятельность уходит значительная часть выручки. Делая покупки в нашем магазине, ты помогаешь людям и фронту. Уверен, что это найдет отзыв в твоем сердце.

    У нашей команды есть набор ценностей: честность, справедливость, сопереживание, взаимопомощь, мужество, патриотичность. Уверены, ты их разделяешь, и мы легко найдем общий язык. Ну а если что-то пойдет не так, не руби с плеча, объясни, где мы ошиблись и поверь, мы разберемся и исправим. Наш девиз “In hostem omnia licita” – по отношению к врагу дозволено все. Возьми этот девиз, он поможет тебе принять правильное решение в трудной ситуации, с честью выполнить боевую задачу и вернуться домой живым и здоровым!

  14. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники в спб

  15. Если вы искали где отремонтировать сломаную технику, обратите внимание – профи услуги

  16. Профессиональный сервисный центр по ремонту радиоуправляемых устройства – квадрокоптеры, дроны, беспилостники в том числе Apple iPad.
    Мы предлагаем: ремонт квадрокоптера
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  17. KevinSounc表示:

    https://slotsiteleri.bid/# 2024 en iyi slot siteleri

  18. Excellent waay of describing, and good article to ake inforation regarding myy
    presesntation subject, whoch i amm goiing to preset in academy.

  19. BradleyNok表示:

    דיסקרטית, עם בחורות שופעות חזה ובעלות ישבנים עסיסיים. רק אתה והיא לבד במיטה, נוגעים ונהנים מרגעים קסומים ומלאי תשוקה ויצרים. דירות דיסקרטיות בירושלים המקום שבו הדברים הלוהטים מתרחשים דירות דיסקרטיות בירושלים מוכיחות שגם הירושלמים יודעים לבלות, והם article source

  20. Uazrifl表示:

    Привет,друзья!
    Заказать диплом о высшем образовании.
    telegra.ph/diplom-sga-kupit-08-13-7

  21. Darrelherse表示:

    en iyi slot siteler: slot siteleri – slot siteleri

  22. AntonioDiz表示:

    ומשוחררים. בילוי שכזה הוא בריא לגוף וגם לנפש – זוהי חוויה משחררת ומספקת הממלאת את הגבר בחום, אהבה ושלווה. וזה בדיוק מה שאתה הן יודעות ללמד, והן תמיד רוצות ללמוד. הן צריכות שותף, וזה יכול להיות אתה. מאמר 7 נערות ליווי בראשון לציון – בילוי לגברים נערות ליווי עצמאיות

  23. DouglasHoapy表示:

    Fonbet промокод на фрибет 2000 https://kmural.ru/news_importer/inc/aktualnue_promokodu_bukmekerskoy_kontoru_fonbet.html
    Fonbet предлагает промокоды, которые предоставляют фрибет на сумму до 2000 рублей. Ввод такого промокода при регистрации или внесении депозита активирует бонусные предложения. Примером такого промокода может быть ‘GIFT200’, который предоставляет бесплатные ставки или увеличение суммы депозита, делая игру на платформе более выгодной и интересной.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。