toFixed四舍五入
时间: 2023-08-18 21:15:12 浏览: 62
toFixed方法是用来将一个数字保留指定位数的小数的方法。它返回的是一个字符串形式的结果,并且如果不够指定的位数,会使用0进行补齐。然而,toFixed方法并不是以四舍五入的方式进行取舍的,而是使用银行家舍入法进行取舍的。银行家舍入法是一种四舍六入五取偶的方法。具体规则如下:
- 当舍去位的数值小于5时,直接舍去。
- 当舍去位的数值大于等于6时,在舍去的同时向前进一位。
- 当舍去位的数值等于5时:
- 如果5后不为空且不全为0,则在舍去的同时向前进一位。
- 如果5后为空或全为0:
- 如果5前的数值为奇数,则在舍去的同时向前进一位。
- 如果5前的数值为偶数,则直接舍去。
然而,有人发现使用toFixed方法时,遇到取舍位置为5的情况时会出现问题。例如,89.115.toFixed(2)会得到89.11而不是89.12。这是因为toFixed方法在遇到5时会出现问题。为了解决这个问题,有人重写了toFixed方法,使用了自定义的逻辑来进行四舍五入。具体的重写代码如下:
```javascript
Number.prototype.toFixed = function(d) {
var s = this + "";
if (!d) d = 0;
if (s.indexOf(".") == -1) s += ".";
s += new Array(d + 1).join("0");
if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) {
var s = "0" + RegExp.$2,
pm = RegExp.$1,
a = RegExp.$3.length,
b = true;
if (a == d + 2) {
a = s.match(/\d/g);
if (parseInt(a\[a.length - 1\]) > 4) {
for (var i = a.length - 2; i >= 0; i--) {
a\[i\] = parseInt(a\[i\]) + 1;
if (a\[i\] == 10) {
a\[i\] = 0;
b = i != 1;
} else break;
}
}
s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");
}
if (b) s = s.substr(1);
return (pm + s).replace(/\.$/, "");
}
return this + "";
};
```
这段代码重写了toFixed方法,使用了自定义的逻辑来进行四舍五入。但需要注意的是,这段代码并非官方提供的方法,使用时需要谨慎。
#### 引用[.reference_title]
- *1* [JavaScript toFixed()四舍五入问题](https://blog.csdn.net/qq_38877858/article/details/108111072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [toFixed方法无法精准四舍五入的问题](https://blog.csdn.net/weixin_42597658/article/details/116535343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)