function totalPrice(price, tax=1.08){ return price*tax; } document.write(totalPrice(450)+"円"); こうなった! 486.00000000000006円 486円になるはずなのに、この小数点以下はどこから来たんでしょう…。 priceが300円だったら普通に324円になるのに、450円だったら現れるこの小数点以下の子達は一体どこから来たんでしょう…。 丸め誤差 そもそも、コンピューター内部で数値は2進法で計算されます。 10進法 → 0・1・2・3・4・5 2進法 → 0・1・10・11・100・101 ので、桁数の多い数字や小数点を処理するのは大変…というかできないんです(´・ω・`)ショボン そこで、うまく丸こんだ(丸め操作 ≒ 切り上げ・切り捨てなど)時に発生する誤差のことを丸め誤差と言います
![JavaScriptで小数点の誤差が発生する件の備忘録 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/0c8121076ae46e1ad59d565b9a13c8490fd1a885/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9SmF2YVNjcmlwdCVFMyU4MSVBNyVFNSVCMCU4RiVFNiU5NSVCMCVFNyU4MiVCOSVFMyU4MSVBRSVFOCVBQSVBNCVFNSVCNyVBRSVFMyU4MSU4QyVFNyU5OSVCQSVFNyU5NCU5RiVFMyU4MSU5OSVFMyU4MiU4QiVFNCVCQiVCNiVFMyU4MSVBRSVFNSU4MiU5OSVFNSVCRiU5OCVFOSU4QyVCMiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MGFlNzM1ZmQ1ZWEzNzBjM2E0MzQ2YTYyZDJmOWI5YTk%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwQ2hpbmF0cyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MTUxNGQ5NTQ2ZTAwYjgyZmRjMDlhMDEzN2M0YzY4MzI%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Deb330ca2f0205ba9394820e4a061892c)