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...

129,548 Responses

  1. ZacharyRetry表示:

    дешевые металлические значки значки из металла на заказ

  2. 1win_ecEt表示:

    1win официальный сайт вход http://1win8009.ru/ .

  3. Sazrdhv表示:

    Купить диплом университета по невысокой стоимости вы можете, обращаясь к проверенной специализированной фирме. Заказать документ университета вы имеете возможность у нас в Москве. afpd.onlinebbs.ru/viewtopic.phpf=2&t=12652

  4. Dannytal表示:

    canada pharmacy online: Express Rx Canada – canadian pharmacy world

  5. MichaelLoapy表示:

    indian pharmacy medicine courier from India to USA MedicineFromIndia

  6. Iariorice表示:

    Заказать диплом ВУЗа по невысокой цене вы сможете, обратившись к надежной специализированной компании. Купить документ о получении высшего образования вы можете у нас в столице. diplomnie.com/kupit-diplom-s-registratsiej-v-reestre-po-nizkoj-tsene-4

  7. mostbet_twKl表示:

    mostbet kg скачать на андроид https://mostbet8007.ru/ .

  8. Jariordgh表示:

    Мы предлагаем быстро приобрести диплом, который выполнен на оригинальной бумаге и заверен печатями, водяными знаками, подписями. Наш диплом пройдет любые проверки, даже при использовании специально предназначенного оборудования. asociacionuncanny.org/?p=12998

  9. Lozxstus表示:

    маркетплейс аккаунтов соцсетей биржа аккаунтов

  10. Iariorthh表示:

    Приобрести диплом ВУЗа по невысокой цене возможно, обращаясь к проверенной специализированной компании. Приобрести документ института можно в нашем сервисе. diplomass.com/kupit-diplom-o-srednem-obrazovanii-dlya-registratsii-bistro

  11. ZacharyRetry表示:

    заготовки для металлических значков корпоративные значки на заказ

  12. Jariorxos表示:

    Наша компания предлагает быстро и выгодно приобрести диплом, который выполнен на оригинальной бумаге и заверен мокрыми печатями, водяными знаками, подписями. Наш диплом способен пройти любые проверки, даже при помощи специфических приборов. kennetjobs.com/companies/premiumydiploma

  13. Sazrykm表示:

    Всегда думал что купить диплом о высшем образовании это миф и нереально, но все оказалось не так, изначально искал информацию про: купить диплом в ханты-мансийске, купить диплом в королёве, купить диплом в волгограде, купить диплом в дербенте, купить диплом в петропавловске-камчатском, потом про дипломы вузов, подробнее здесь proffdiplomik.com/volzhskij

  14. MichaelLoapy表示:

    reliable canadian pharmacy ExpressRxCanada online canadian pharmacy

  15. Dannytal表示:

    mexico pharmacy order online: Rx Express Mexico – RxExpressMexico

  16. ZacharyRetry表示:

    металлический значок metallicheskie-znachki-zakaz.ru/

  17. MichaelLoapy表示:

    indian pharmacy online indian pharmacy online Medicine From India

  18. mostbet_lmPi表示:

    мостбет вход в личный кабинет мостбет вход в личный кабинет .

  19. ZacharyRetry表示:

    изготовление металлических значков производство металлических значков

  20. Michaelrom表示:

    legal to buy prescription drugs from canada: Buy medicine from Canada – canadian pharmacy 24h com

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

  22. Mazrngl表示:

    Где заказать диплом специалиста?
    Получаемый диплом с приложением целиком и полностью отвечает условиям и стандартам, никто не отличит его от оригинала – даже со специально предназначенным оборудованием. Не следует откладывать личные цели на потом, реализуйте их с нашей компанией – отправляйте заявку на диплом сегодня! Получить диплом о среднем специальном образовании – не проблема! sampcrmrp.1stbb.ru/viewtopic.phpf=117&t=2061

  23. ZacharyRetry表示:

    металлические значки на заказ москва https://metallicheskie-znachki-zakaz.ru

  24. StevenDuase表示:

    my canadian pharmacy rx: Canadian pharmacy shipping to USA – canadian pharmacy prices

  25. StevenDuase表示:

    canadian pharmacy: ExpressRxCanada – pharmacy wholesalers canada

  26. Dozawtus表示:

    маркетплейс аккаунтов соцсетей магазин аккаунтов

  27. Foxastus表示:

    гарантия при продаже аккаунтов купить аккаунт с прокачкой

發佈回覆給「mostbet_oqPi」的留言 取消回覆

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