【发布时间】:2015-08-27 19:04:42
【问题描述】:
我正在尝试在 java 中将 double 转换为 float。
Double d = 1234567.1234;
Float f = d.floatValue();
我看到f的值为
1234567.1
我不想打印一个浮点数的字符串值。我只是想知道在将 double 转换为 float 时不会丢失任何精度的最大位数是多少。我可以在 java 中显示超过 8 个有效数字吗?
【问题讨论】:
-
@Tunaki 我不想打印字符串,我在调试时看到了 float 的值。编辑了问题。
-
“不丢失任何精度的最大位数”是什么意思?您问题中 Float 值的实际值为 1234567.125。
-
@RealSkeptic 我只想在转换为浮点数时获得相同的双精度值。我的意思是最大位数是多少?
-
并非所有双精度值都可以精确地表示为浮点值。这实际上是 double 存在的全部原因:提供比 float 更高的精度(即更多可用的数字)。此外,“[十进制] 位数”是考虑浮点数的一种过于简单化(因此注定要失败)的方式。
标签: java floating-point double floating-point-precision