国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js小數計算小數點后顯示多位小數的實現方法

2019-11-20 09:51:09
字體:
來源:轉載
供稿:網友

首先寫一個demo 重現問題,我使用的是一個js在線測試環境[打開]

改寫displaynum()函數

function displaynum(){var num = 22.77;alert(num + 10);}

點擊Show按鈕 結果顯示32.769999999996 出現了N多小數.

也并不是所有數字都會出現這種現象, 除了 22.99  2.777 , 好像這幾個數字也沒什么特殊.

查了一些資料, 一是JS浮點數計算的bug, 另一個是和計算機最終轉換成二進制計算有關系, 但是為什么不是所有小數都會有這種現象, 目前我也不清楚, 有時間再去深入研究一下。

現在有兩種解決方法, 第一種就是利用JS .toFixed(n) 方法, 直接獲取n位小數, 個人覺得這種方法在數據精度上會有一些問題. 如果數據精度要求不高的話 可以使用. 第二種方法就是自己寫js 運算方法.

以下是自定義加法函數, 使用此方法進行相加會避免上面問題。

function addNum(num1,num2){var sq1,sq2,m;try{sq1=num1.toString().split(".")[1].length;} catch(e){sq1=0;}try{sq2=num2.toString().split(".")[1].length;} catch(e){sq2=0;}m=Math.pow(10,Math.max(sq1,sq2));return ( num1 * m + num2 * m ) / m;}

當然簡單一點也可以寫成 alert((num * 3 + 10 * 3) /3); 這樣也不會出現n多小數。

alert((num * 3 + 10 * 3) /3); 與 alert(num + 10); 這兩種寫法計算機在底層轉換成二進制運算是有區別的, 或許這就是出現上述問題的原因

以上這篇js小數計算小數點后顯示多位小數的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闽侯县| 荔浦县| 阿尔山市| 唐山市| 永年县| 新民市| 常德市| 迭部县| 苏尼特右旗| 类乌齐县| 肥城市| 师宗县| 平罗县| 长海县| 石屏县| 噶尔县| 旬邑县| 信丰县| 河津市| 湾仔区| 同仁县| 镇平县| 玉龙| 浙江省| 拉萨市| 积石山| 大连市| 尖扎县| 剑阁县| 文成县| 长葛市| 潢川县| 漠河县| 固始县| 浑源县| 福建省| 云梦县| 天等县| 思南县| 哈密市| 台东县|