首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将双精度值转换为大整数或长值

如何将双精度值转换为大整数或长值
EN

Stack Overflow用户
提问于 2018-04-16 11:18:41
回答 1查看 321关注 0票数 0

需要将双精度值转换为大整数或长整型值。已尝试使用大整数,但转换后的值与原始值不同。

代码语言:javascript
复制
double doub = 123456789123456789123456789d;
BigDecimal bd = BigDecimal.valueOf(doub);
System.out.println("value=="+bd.toBigInteger());

value==123456789123456790000000000

Expected output: 123456789123456789123456789
EN

回答 1

Stack Overflow用户

发布于 2018-04-16 11:28:09

你的第一行就失去了所有的精确度。

代码语言:javascript
复制
double doub = 123456789123456789123456789d;
System.out.println(doub);

将打印以下内容:

代码语言:javascript
复制
1.2345678912345679E26

这等于你的

代码语言:javascript
复制
123456789123456790000000000

原因是123456789123456789123456789123456789不能用双精度64位IEEE754浮点精确表示。因此,您永远不会在第一个地方拥有要转换为BigInteger的值123456789123456789123456789.如果您将值转换为字符串,则可以将其转换为BigInteger,如下所示:

代码语言:javascript
复制
BigInteger b = new BigInteger("123456789123456789123456789");
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49849181

复制
相关文章

相似问题

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