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

102,767 Responses

  1. MasonGed表示:

    Fonbet промокод за регистрацию как получить промокод в
    Fonbet предоставляет промокоды, которые активируют бонусы за регистрацию. Примером такого промокода является ‘GIFT200’, который предоставляет бесплатные ставки и другие награды для новых пользователей. Ввод этого промокода при регистрации делает процесс начала игры более выгодным и интересным.

  2. Your articles are consistently enlightening and enjoyable Thank you from IDProperticom!

  3. Darin表示:

    My page :: Daycare Near Me – Find The Best Daycares Near You (Darin)

  4. Cazrfbh表示:

    Здравствуйте!
    Купить диплом о высшем образовании
    anomalnews.ru/forums/topic/new-article-reveals-the-low-down-on-binance-sec-and-why-you-must-take-action/page/21/#post-105457

  5. Cazrhtx表示:

    Здравствуйте!
    Купить диплом о высшем образовании
    dverkivdom.ru/lu-23-satinat/reviews

  6. Diplomi_smEa表示:

    Привет, друзья!
    Заказать документ ВУЗа можно в нашем сервисе.
    cloudlab.tw/javascript-??????????/comment-page-33722/#comment-3153020

  7. RhysGed表示:

    Фрибет на Фонбет промокод промокод фонбет для старых пользователей
    Фонбет предлагает промокоды на фрибет, которые позволяют пользователям получить бесплатные ставки. Промокод ‘GIFT200’ активирует фрибеты для новых пользователей, позволяя им сделать ставки без использования собственных средств. Эти промокоды делают игру более увлекательной и увеличивают шансы на выигрыш.

  8. Lazryws表示:

    Добрый день!
    Мы изготавливаем дипломы любой профессии по приятным ценам.
    smallbizblog.net/2024/08/17/diplom-213032scgtr

  9. Artikel ini benar-benar menonjol dengan cara Anda menjelaskan topik yang kompleks dengan cara yang sangat jelas dan mudah dipahami. Saya mendapatkan banyak pengetahuan baru dari bacaan ini. Terima kasih atas karya yang sangat informatif ini. Salam hangat, Pasang Iklan Properti Gratis

  10. Cazrndq表示:

    Как купить аттестат 11 класса с официальным упрощенным обучением в Москве
    primacad.ru/images/pgs/?gde_kupit_podlinnuy_diplom_vuza_bezopasno_i_legalno

  11. OLaneevige表示:

    What’s up it’s me, I am also visiting this web site daily, this web page is actually nice and the viewers are actually sharing pleasant thoughts.
    https://www.thebluebook.com/iProView/1837611/complete-hvac-inc/subcontractors/gallery/

  12. Lazrxsi表示:

    Здравствуйте!
    Приобрести диплом университета.
    diplom-moskva-f166630.promportal.su/about

  13. Lazrfaf表示:

    Привет, друзья!
    Приобрести диплом любого ВУЗа.
    worldcrisis.ru/crisis/hnfmrfdtg

  14. JoeGed表示:

    Fonbet промокод на фрибет где взять промокод фонбет
    Промокоды на фрибет от Fonbet предоставляют пользователям бесплатные ставки. Примером такого промокода является ‘GIFT200’, который активирует фрибеты для новых игроков. Эти промокоды позволяют сделать ставки без использования собственных средств, увеличивая шансы на выигрыш и делая игру более увлекательной.

  15. Sazrtla表示:

    Как официально приобрести аттестат 11 класса с минимальными затратами времени

    russianecuador.com/forum/group.php?&do=discuss&groupid=14&discussionid=&gmid=462

  16. Sazrelx表示:

    Здравствуйте!
    Заказать документ ВУЗа
    kxk.ru/adhdkids/v15_590448__.php

  17. Antonethuth表示:

    End of an era: The big change coming to European travel in November
    вебкам модель работа онлайн

    In travel news this week: an accidental megadeal on first-class tickets, the world’s best-connected airport and why now is a good time to plan a trip to Europe. Plus a bit of relief for those of you traveling this Labor Day weekend.

    Goodbye to EU passport stamps
    Paper mementoes of our travels, from boarding cards to even passports themselves, are fast moving into obsolescence.

    The inky, smudgy joy of a fresh passport stamp will be a thing of the past for visitors to the 29 countries of the European Union Schengen Area starting November 10. That’s when the new automated Entry/Exit System (EES) comes into effect.

    It’s separate from the delayed ETIAS visa waiver program, which is due to start in the first half of 2025 and will mean travelers from outside the EU will be charged a €7 entry fee that is valid for three years.

    Destination inspiration
    Get your stamps while you can with these European vacation picks.

    Il dolce far niente – “the sweetness of doing nothing” – has been perfected by Italians on their vacations in southern sweet spots such as Naples, Ischia, Puglia, the Amalfi Coast and Capri. These remarkable photographs by UK photographer Lucy Laucht show how to relax the Italian way.

    In Hungary, the Gresham Palace is the grandest Budapest hotel of them all, having sat in its prime position overlooking the River Danube for more than a century. Here’s how this architectural gem looks in its current incarnation.

    Finally, if you’re considering a longer stay, an idyllic Swedish town is selling off land with prices so low you might think they’re mistakes. But Gotene, 320 kilometers (200 miles) southwest of Stockholm, is indeed selling plots with prices starting at just 1 krona, or 9 US cents, per square meter (11 square feet).

    Aviation news
    An airline accidentally offered a megadeal on first-class tickets, with 300 lucky customers getting savings of 85% off. Here’s what happened next.

    The staff at Australian flag carrier Qantas must have been flat-out like a lizard drinking sorting that mess out. And if you don’t understand that lingo, it’s time to check out our guide to Aussie slang.

    An airport on the edge of southeast Europe has been named the best connected in the world, with more than 300 direct flights to unique destinations. It’s been networking fast, too; it only opened in 2018.

  18. Uazrtgc表示:

    Привет!
    Приобрести диплом ВУЗа .
    telegra.ph/kupit-diplom-o-vysshem-obrazovanii-v-nizhnem-novgorode-08-13-8

  19. Diplomi_ktEa表示:

    Привет!
    Купить документ университета можно в нашей компании в столице.
    introsystems.ru/component/kunena/user/524164-markedmrof

  20. JasonHes表示:

    This city is developing the world’s tallest timber tower, again
    работа для девушек вакансии
    The US city of Milwaukee is already home to the world’s tallest timber tower. But another, even taller, wooden skyscraper could be added to its skyline, designed by Vancouver-based studio Michael Green Architects (MGA).

    The firm recently released plans for the development, which includes a 55-story tower made principally from mass timber — thick, compressed, multilayered panels of solid wood. If built, it would usurp the current world title holder, the 25-story Ascent tower by Korb + Associates Architects, as well as becoming the tallest building in the state of Wisconsin.

    MGA, which specializes in wooden architecture, hopes that the project will set a “new global benchmark for mass timber construction.”

    The project is part of the redevelopment of the Marcus Performing Arts Center, which opened in 1969 and won the Honor Award for Excellence in Architectural Design from the American Institute of Architects in 1970. Led by Neutral, which bills itself as a “regenerative development company,” the redesign will transform what is currently the center’s concrete parking lot into a space with residential units, offices, restaurants, cafes, grocery stores and public plazas. According to MGA, construction will cost an estimated $700 million. The plan is currently going through the city’s approval process, during which it is expected to evolve.

    Why timber?
    While the use of mass timber is steadily increasing worldwide, thanks to changes in building regulations and shifting attitudes towards the material, it has yet to match the sheer height of buildings made of concrete and steel — although a slew of timber high-rises have been proposed in recent years. MGA says its tower design would be approximately 600 feet (182 meters) tall — more than double the 284 feet (87 meter) tall Ascent tower.

    “The race for height is important,” said Michael Green, an architect and founder of MGA. “It’s not about showing off, it’s about showing what’s possible to the public.”

    He argued that the reason timber skyscrapers haven’t yet become mainstream is because climate change hasn’t been at the center of the conversation. “We didn’t really need to challenge the status quo of steel and concrete,” he said. “But because those materials are so hard on the climate, we had to find a different way to build towers and big buildings in general.”

發佈留言

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