3
A
回答
0
转换为字符串可能是您拥有的最佳选择。请记住double
在内部表示为基本2。因此,您看到的十进制表示法只是实际存储值的近似值(整数除以2 ),这是个别幂数的和。
所以试图找出小数位数从二进制表示当然不是一件容易或无关紧要的任务 - 尤其是因为该框架也可能适用四舍五入使像3.999999999998这样的数字看起来像4.0,因为它们看起来比实际上更精确。
5
计算你需要多长时间将数字除以10,直到它小于1 - >该数字在小数点之前给出数字。
然后计算您必须多长时间将原始数字乘以10,直到它等于Math.Floor-result - >,该数字会给出小数点后面的数字。
Add。乐于。
编辑:正如乔伊所指出的那样,它存在一些不统一性。事先定义最大数字位数,这样您就不会创建无限循环。 在另一方面 - “多久是丹麦的海岸?” ......
1
/// Returns how many digits there are to the left of the .
public static int CountDigits(double num) {
int digits = 0;
while (num >= 1) {
digits++;
num /= 10;
}
return digits;
}
正如马丁所说,计数到的权利。是毫无意义的。
测试:
MathPlus.CountDigits(56.46855976) -> 2
MathPlus.CountDigits((double)long.MaxValue + 1) -> 19
MathPlus.CountDigits(double.MaxValue) -> 309
相关问题
- 1. 我怎样才能获得的第n个双精度数
- 2. 我怎样才能得到一个双精度值?
- 3. 截断双精度到2位小数?
- 4. 数字的双精度
- 5. 将双精度数据投射到另一个数字类型
- 6. 你怎么能由一个数组
- 7. 限制一个双精度到小数点后两位的小数位
- 8. 指定双精度到另一个带有1个数字的双精度小数点后
- 9. 双精度中的紧接下一个数字是什么
- 10. 格式化一个双精度到两位小数
- 11. 双精度浮标的双精度数字
- 12. 你怎么得到一个表是100%的窗口高度
- 13. 获取双精度值的小数位
- 14. 可能影响双精度的最大小数位数
- 15. 我怎样才能得到从一个数字在java中的位数
- 16. 我怎样才能得到一个基于整数的位移数字
- 17. 标准双精度IEEE浮点数有多少位的精度?
- 18. 这些双精度值如何精确到20位小数?
- 19. 我怎样才能正常的一个双点数到一个int数字exacly?
- 20. 如何比较双精度5位数?
- 21. 你怎么能得到一个java_proto_library 1.7兼容输出?
- 22. UInt32数组到双精度数组Swift
- 23. 你怎么能你在ItemTemplate中添加一个跨度
- 24. 你怎么用数字
- 25. 你怎样才能得到每一块数据的网址?
- 26. 在Visual Studio中将字节数组中的64位双精度型转换为80位双精度型
- 27. 双精度和单精度浮点数?
- 28. Java的双精度数学
- 29. WPF:你怎么称呼双窗口,你从哪一个选择到另一个?
- 30. 更精确的数字数据类型比双精度?
噢胡说,什么是错的:'双d = 56.46855976; int length = d.ToString()。Replace(“。”,“”).Length;' – slugster 2010-09-16 11:50:46
还要考虑到你看到的数字(56.46855976)只是一个值的*表示*。值1/3非常短,数字0.33333 ...不是。因此,除了查看问题,数字的长度信息不多。 – 2010-09-16 11:54:06
[c#十进制字符串为货币]可能重复(https://stackoverflow.com/questions/10437416/c-sharp-decimal-to-string-for-currency) – TylerH 2018-02-16 16:59:44