【问题标题】:double datatype is not assigning large value双数据类型未分配大值
【发布时间】:2013-06-08 04:09:58
【问题描述】:

例如,我正在尝试为双数据类型分配一个较大的值

someValue = 36028797018963967D;

但问题是,当我调试变量 someValue 的值时,它变成了 36028797018963968D,我不知道为什么。

任何帮助将不胜感激,

谢谢!

【问题讨论】:

  • 什么语言,java?你是怎么调试的?请向我们展示您的代码。我认为当你在java中调试、打印时你应该总是得到工程符号,所以如果你正在格式化它,那么你的格式可能是错误的。尝试改用 BigDecimal。
  • @EngineerDollery 这种行为在大多数使用 64 位浮点的语言中都是正常的。
  • 这是在 c# 中,我在 Visual Studio 2012 中逐行调试

标签: double variable-assignment


【解决方案1】:

这两个数字在 64 位浮点中是相同的。打印出来的是用于打印它们的方法的产物。试试这个:

assert(36028797018963967D == 36028797018963968D)

有效!

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2021-09-30
    • 2013-04-13
    相关资源
    最近更新 更多