首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Modulus 1 (%1)返回近似值

Java Modulus 1 (%1)返回近似值
EN

Stack Overflow用户
提问于 2016-11-11 07:04:20
回答 1查看 1.2K关注 0票数 0

我有样本代码

代码语言:javascript
复制
double k=3.14, l=0.5, m=1.3333;
        System.out.println(k+":"+k%1);
        System.out.println(l+":"+l%1);
        System.out.println(m+":"+m%1);

其结果是产出:

代码语言:javascript
复制
3.14:0.14000000000000012
0.5:0.5
1.3333:0.33329999999999993

为什么会这样呢?我期望x%1返回x值的非整数部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 07:08:53

请参阅Is floating point math broken?

二进制浮点数学就是这样。在大多数编程语言中,它是基于IEEE 754标准的。JavaScript使用64位浮点表示,这与Java的double相同.问题的症结在于,数字以这种格式表示为整数乘以2的幂;分母不是2的幂的有理数(如0.1,即1/10)不能精确表示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40542804

复制
相关文章

相似问题

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