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. 指定双精度到另一个带有1个数字的双精度小数点后
- 6. 双精度中的紧接下一个数字是什么
- 7. 双精度浮标的双精度数字
- 8. 获取双精度值的小数位
- 9. 这些双精度值如何精确到20位小数?
- 10. 标准双精度IEEE浮点数有多少位的精度?
- 11. 你怎么能得到一个java_proto_library 1.7兼容输出?
- 12. 在Visual Studio中将字节数组中的64位双精度型转换为80位双精度型
- 13. 你怎么能你在ItemTemplate中添加一个跨度
- 14. 双精度和单精度浮点数?
- 15. Java的双精度数学
- 16. 更精确的数字数据类型比双精度?
- 17. 是否有可能以保真度将浮点双精度浮点双精度到两个十进制整数?
- 18. 向上舍入一个双精度到最接近的整数
- 19. 将一个双精度数组添加到Swift中的邮件
- 20. WPF:你怎么称呼双窗口,你从哪一个选择到另一个?
- 21. 获取小数位的精确精度从双在.net 3.5
- 22. 舍入到specfic数字失败,这个双精度值
- 23. 从字符串数组中获取第一个双精度值
- 24. std :: copy复制一个浮点数组的双精度数组?
- 25. MIPS双精度立即数
- 26. iPhone/iPad双精度数学
- 27. 双精度数量级
- 28. 功能科尔(双精度,双精度)不存在 - PostgreSQL的
- 29. 作为两个双打总和的双双精度浮点数
- 30. 你怎么能得到一个像输出一样的Linux顶端使用C
噢胡说,什么是错的:'双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