国产探花免费观看_亚洲丰满少妇自慰呻吟_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小數計算小數點后顯示多位小數的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉安市| 桑日县| 昆明市| 肥乡县| 南投市| 崇明县| 恩平市| 岑巩县| 桦川县| 喀喇沁旗| 绥滨县| 盖州市| 含山县| 宜春市| 洪雅县| 马鞍山市| 徐水县| 康马县| 扎赉特旗| 酉阳| 苗栗市| 城固县| 株洲县| 黔西| 日照市| 石城县| 东山县| 嘉定区| 龙游县| 荔浦县| 分宜县| 阿荣旗| 文成县| 贺州市| 稻城县| 鹤峰县| 浪卡子县| 汽车| 安化县| 准格尔旗| 元谋县|