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