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

为什么ColdFusion中的0.06 + 0.01 = 0.07?

程毅
2023-03-14
问题内容

为什么ColdFusion中的数学运算似乎不受浮点数学问题的影响?拿代码:

result = 0.06 + 0.01;

writedump(result);
writedump(result.getClass().getName());

哪个输出

0.07

java.lang.Double

但是,当将两个double相加时,equivlant Java代码会产生预期的效果:

public static void main(String[] args) {
    double a = 0.01d;
    double b = 0.06d;

    System.out.println(a + b); //0.06999999999999999
}

由于浮动数学的现实性,这是我期望从ColdFusion中看到的内容(http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html)。

是ColdFusion在幕后做些“魔术”,还是我在这里看一个孤立的异常?


问题答案:

我强烈怀疑它只是在 输出 上四舍五入而已。换句话说,问题仍然存在-当使用来打印该特定值时,它只是没有出现writedump

如果使用,会发生什么:

writedump(String.valueOf(result));



 类似资料:
  • 问题内容: 我正在为我的中学课程用Java写一个基本的命令行程序。我们现在仅使用变量。用于计算购买后找零的任何类型的纸币和硬币的数量。这是我的程序: 它应该可以正常工作,但在最后一步还有0.01美元的余款时,便士数应该为1,而应为0。进入代码并将更改值输出到控制台几分钟后,我发现在change =0.01的最后一步,它将更改为0.009999999999999787。为什么会这样呢? 问题答案:

  • Adobe ColdFusion(直译:冷聚变),是一个动态Web服务器,其CFML(ColdFusion Markup Language)是一种程序设计语言,类似现在的JSP里的JSTL(JSP Standard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。 Coldfusion 最早是由 Allaire 公司开发的一种应用服务器平台,其运行的 CF

  • 下面的代码引发: 线程“main”java.lang.ClassCastException中的异常:不能将类子级转换为类java.util.List(子级位于加载器“app”的未命名模块中;java.util.List位于加载器“bootstrap”的模块java.base中) 我真的不知道它为什么会这样做。我想我写的代码是正确的。 请帮助我理解这一点,以及如何解决这个问题。

  • 我被这个JavaSpring Boot问题困住了。我已经在loadUserByUsername方法的返回语句中填写了自动权限:this.get权限(user)。但是当我打印身份验证对象时,它说授予权限为空: UsernamePasswordAuthenticationToken[Principal=mark,Credentials=PROTECTED],Authenticated=true,Det

  • 本文向大家介绍coldfusion Query,包括了coldfusion Query的使用技巧和注意事项,需要的朋友参考一下 示例 考虑表dbo.state_zip,其中包含列city,statecode并且zipcode,有超过80,000条记录。 参数 属性 需要 类型 默认 描述 询问 真正 串 查询对象的变量名。 起始行 假 数字 查询对象的起始行索引。 row 假 数字 查询对象的结束

  • 本文向大家介绍浏览器中window.length的结果是什么?为什么?相关面试题,主要包含被问及浏览器中window.length的结果是什么?为什么?时的应答技巧和注意事项,需要的朋友参考一下 神奇的问题,神奇的答案