当前位置: 首页 > 面试题库 >

为什么将这两个双数相加不能给出正确的答案?[重复]

常永长
2023-03-14
问题内容

这个问题已经在这里有了答案

9年前关闭。

可能重复:
用Java中的Doubles保持精度

import static java.lang.System.out;
public class q2{  
    public static void main(String args[]){  
        double x=4.02, y=0.05;  
        out.println(x+y);  
    }  
}

输出:

4.069999999999999

为什么输出那个。我以为会是4.07。请解释为什么在Java中会发生这种情况?

抱歉,标题标题不正确。 我再没有比这更好的头衔了


问题答案:

这是因为某些数字(例如0.1)无法用二进制浮点数精确表示。

考虑阅读以下文章:

  • 每个计算机科学家都应了解的浮点运算法


 类似资料:
  • 问题内容: 不管我累什么都会返回0%。我尝试将其强制转换为int,double,float 为什么对于分数= 5 numberOfQuestions = 8这样的数字返回0%? 问题答案: 问题在于,将两个整数相除可得到结果的整数部分。因此, 将始终为0。 您应该做的是 然后将首先执行,然后除法将为您提供正确的结果。

  • 安装问题 PS C:\Users\Administrator sharp@0.21.3安装C:\用户\管理员\gatsby-site3\node_modules\锐(节点安装/libvips 使用缓存的C:\Users\Administrator\AppData\Roaming\npm-cache\u libvips\libvips-8.7.0-win32-x64.tar.gz info shar

  • 我正在努力学习同步。根据我所了解的,下面的代码应该给出8000作为最终结果,但是我得到了一个随机的结果,如下所示; 还是得到1293 2214 1403 3214 4214 5214 6224 7037这样的输出有没有人能给我解释一下如何实现同步,这里出了什么问题?

  • 公共静态无效字(字符串文本){int numWords=1; 字符串“是this_one_long_word还是几个???你觉得怎么样??太多“应该打印10个字和”!这使用periods.as.word.delimiters,可能很棘手。“应该打印10个单词。 描述如下:一个单词是由一个或多个字符组成的序列,由空格或句子终止符(句号、冒号、分号、问号、感叹号)分隔,无论它是否为实际的英语单词。空白

  • 问题内容: 情况一: 输出: 2005年7月8日星期五00:00:00 GMT-0700(PST) 案例二: 输出: Thu Jul 07 2005 17:00:00 GMT-0700(PST) 为什么第二次解析不正确? 问题答案: 在第5版规范发布之前,该Date.parse方法完全依赖于实现(除后者返回数字而不是a之外,其他方法new Date(string)等效)。在第5版规范中,添加了该要

  • 我在学校上课: 然后我创建了School的两个实例,并比较了两个实例的相等性: 即使我设置了相同的和到