鍍金池/ 問(wèn)答/HTML/ javaScript中的數(shù)字精度控制問(wèn)題

javaScript中的數(shù)字精度控制問(wèn)題

javaScriptde decimal.js庫(kù)怎么控制數(shù)字的精度

function round(x, y) {
  const a = new Decimal(x).round();
  Decimal.set({ precision: 2, rounding: y });
  return a;
}

console.log(round("1235.1235", 1).valueOf()); // 1235

上邊是代碼,不知道問(wèn)題出在哪里

回答
編輯回答
淚染裳

你沒(méi)有說(shuō)想要的結(jié)果是什么。
看了下文檔感覺(jué)round的作用就是取整吧。
如果要實(shí)現(xiàn)控制位數(shù)的話,用toExponential, toFixed和toPrecision方法吧。

x = new Decimal(255.5)
x.toExponential(5)              // '2.55500e+2'
x.toFixed(5)                    // '255.50000'
x.toPrecision(5)                // '255.50'
2018年4月25日 11:29
編輯回答
不二心

由于js是一種弱類型語(yǔ)言,而計(jì)算機(jī)能夠讀取的數(shù)字只有0&1,所以一些浮點(diǎn)數(shù)會(huì)轉(zhuǎn)換成0&1后再進(jìn)行運(yùn)算,所以會(huì)出現(xiàn)這種精度丟失的問(wèn)題,我目前了解到的有三種方式:
1.bignumber.js 通過(guò)這個(gè)js庫(kù)來(lái)進(jìn)行計(jì)算;
2.將需要運(yùn)算的數(shù)進(jìn)行乘以10的n次冪,運(yùn)算之后再去處以10的n次冪,即可得到準(zhǔn)確的數(shù)字;
3.對(duì)運(yùn)算后的數(shù)進(jìn)行toFixed(),但是這種方法一樣會(huì)丟失精度,不推薦使用;
4.純手打,望采納

2017年6月4日 13:36