首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将1234567.1234的双值转换为java中的浮动值

将1234567.1234的双值转换为java中的浮动值
EN

Stack Overflow用户
提问于 2015-08-27 19:04:42
回答 4查看 3.3K关注 0票数 0

我正试图在java中将double转换为float。

代码语言:javascript
运行
复制
Double d = 1234567.1234;
Float f = d.floatValue();

我看到f的值是

代码语言:javascript
运行
复制
1234567.1

我不想打印一个字符串值的浮点。我只是想知道,在将double转换为float时,不丢失任何精度的最大位数是多少。我可以在java中显示8个以上的有效数字吗?

EN

Stack Overflow用户

发布于 2015-08-27 19:40:15

float的精度约为7小数点,但由于浮子是以二进制形式存储的,这是一种近似。

要演示所述浮点值的实际精度,请尝试如下:

代码语言:javascript
运行
复制
double d = 1234567.1234;
float f = (float)d;
System.out.printf("%.9f%n", d);
System.out.printf("%.9f%n", Math.nextDown(f));
System.out.printf("%.9f%n", f);
System.out.printf("%.9f%n", Math.nextUp(f));

输出

代码语言:javascript
运行
复制
1234567.123400000
1234567.000000000
1234567.125000000
1234567.250000000

如您所见,对于这个数字,有效的十进制精度大约是1位小数位,或8位数字,但是如果您使用数字9876543.9876运行代码,您将得到:

代码语言:javascript
运行
复制
9876543.987600000
9876543.000000000
9876544.000000000
9876545.000000000

只有7位数的精确度。

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32257543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档