小数,比如 0.1,0.05 ,0.37 ,0.005 ,想让他变成整数,第一个需要乘以 10,后两个需要乘 100,最后乘 1000,怎么计算出来是 10,100,1000,也就是有几位小数?通过代码实现,难道只能转字符数位数?

1 pdszhmilo Nov 16, 2020 是的。字符串判断 |
2 th00000 Nov 16, 2020 如果这些数字来源是业务的话, 看业务对应的小数点最多到多少, 不太离谱的话递归乘以是 10 也可以 |
3 AllenHua Nov 16, 2020 除了字符串 试试普通的循环? 乘以 10 得到整数 break ;没有的话 继续乘以 100,得到整数 break; 没有的话 继续乘以 1000…… 如此以往 break 的时候 乘了多少就是要的结果 |
4 misdake Nov 16, 2020 对于正数,取以 10 为底的对数,比如 log10(0.05)=-1.30103,需要+2 才能大于 0,所以是小数点后第二位 用这种数学方法的话,不同的计算方式可能有误差,需要注意,0.3-0.2=0.09999999999999998 |
6 0x2CA Nov 16, 2020 其他回答的是可以实现的,但是有一些特殊情况,有一些编程语言有设计缺陷,比如 0.1+0.02 可能会变成 0.12000000000001,想自动化是不靠谱的,你需要了解你的编程语言有没有这些陷阱 |
7 QingchuanZhang Nov 16, 2020 while(abs(x-floor(x))) > eps: x *= 10 |
8 llej Nov 16, 2020 ```Javascript String(0.005).split('.')[1] * (10 ** String(0.005).split('.')[1].length ) ``` |
9 yonoho Nov 16, 2020 转字符串应该是最合适的,重复乘 10 不好,可能出现精度问题。 |
10 kx5d62Jn1J9MjoXP Nov 17, 2020 via Android 如果你的小数是点数,用位运算提取出这个浮点数 2 的幂次就可以了 |
11 wangtian2020 Nov 18, 2020 转字符串,看小数点后长度是多少 |