Redian新闻
>
【急】JS round 运算出错如何破
avatar
【急】JS round 运算出错如何破# Programming - 葵花宝典
g*7
1
我目前的1.2%,存了好久也没管他,
突然想起来是不是该换个高点的了
avatar
m*n
2
RT,谢谢!
avatar
m*h
3
来PK吧
avatar
k*n
4
比如
Math.round(212999*1.5)=319499
Math.round(21299.9*10*1.5)=319499
但是
Math.round(2129.99*100*1.5) =319498
头大了。。
avatar
i*m
5
1.2已经不错了吧,到处做广告的american express 也就1.3

【在 g****7 的大作中提到】
: 我目前的1.2%,存了好久也没管他,
: 突然想起来是不是该换个高点的了

avatar
j*a
6
Math.round(212999*15/10)

【在 k**n 的大作中提到】
: 比如
: Math.round(212999*1.5)=319499
: Math.round(21299.9*10*1.5)=319499
: 但是
: Math.round(2129.99*100*1.5) =319498
: 头大了。。

avatar
v*n
7
discover 1.5
avatar
k*n
8
自己写了个简单的解决办法来round小数点后两位。。
return Math.round((Math.round(x*1000)/1000)*100)/100;
但遇到 9.9949 就不行了。。
还打算试试 Math.round(x*100+0.0000000001)/100
avatar
r*e
9
ally 1.29%. 钱多又不投资的话还是搞个 rewards checking

【在 g****7 的大作中提到】
: 我目前的1.2%,存了好久也没管他,
: 突然想起来是不是该换个高点的了

avatar
a9
10
google is your friend
function round(value, decimals) {
return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}

【在 k**n 的大作中提到】
: 自己写了个简单的解决办法来round小数点后两位。。
: return Math.round((Math.round(x*1000)/1000)*100)/100;
: 但遇到 9.9949 就不行了。。
: 还打算试试 Math.round(x*100+0.0000000001)/100

avatar
a*k
11
我收到的promotion email,怎么说是APY 1.35%呢?你能给个链接吗?谢谢

【在 v***n 的大作中提到】
: discover 1.5
avatar
o*r
12
I think that it's something to do with the IEEE floating point standard used
in PCs. Not all float/double numbers can be stored precisely. For example,
1/3 can't be stored precisely. Mathematically, 1/3 + 1/3 + 1/3 = 1. But in
computer, it may not be true.
212999 * 1.5 = 319498.5
21299.9 * 10 * 1.5 = 319498.5
2129.99 * 100 * 1.5 = 319498.49999999994
Math.round works as follows:
- for >= 0.5, it rounds up.
- for < 0.5, it rounds down.
So if you add 0.5, the Math.round gives you the right result:
212999 * 1.5 + 0.5 = 319499 -> round to 319499
21299.9 * 10 * 1.5 + 0.5 = 319499 -> round to 319499
2129.99 * 100 * 1.5 + 0.5 = 319498.99999999994 -> round to 319499
avatar
p*e
13
http://www.google.com/url?sa=t&source=web&rct=j&url=https://dev
用上面的Math.round10
Math.round(Math.round10(expr, -5))
-5是你要的精度

used
,

【在 o*********r 的大作中提到】
: I think that it's something to do with the IEEE floating point standard used
: in PCs. Not all float/double numbers can be stored precisely. For example,
: 1/3 can't be stored precisely. Mathematically, 1/3 + 1/3 + 1/3 = 1. But in
: computer, it may not be true.
: 212999 * 1.5 = 319498.5
: 21299.9 * 10 * 1.5 = 319498.5
: 2129.99 * 100 * 1.5 = 319498.49999999994
: Math.round works as follows:
: - for >= 0.5, it rounds up.
: - for < 0.5, it rounds down.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。