【问题标题】:Recognizing floating point in double variable识别双变量中的浮点
【发布时间】:2015-07-27 22:42:36
【问题描述】:

我对双变量中的大数字有疑问。想象一下,我有 3 个这样的数字:

  1. 124.556321466
  2. 120.00
  3. 1.79769313486232E+308

我只想识别第 2 项或浮点数后没有任何有价值数字的数字。换句话说,这些数字可以是整数,并且数字的长度不一样。

另外两件事:

  • 我不想将它们转换为字符串,因为这对 CPU 来说非常耗时。
  • 我无法将它们转换为整数,因为我需要所有数字。

【问题讨论】:

  • 只需将双精度转换为整数即可“识别”它。然后从 double 中减去整数并检查绝对结果是否小于 epsilon 值。
  • 第三个数字也是一个整数,但超出了大多数有限范围整数类型的范围。你想把它当作一个整数吗?
  • 另外,什么语言?我会在不同的语言中使用不同的方法。
  • 抱歉,在 c# 中使用类型转换我会丢失很多数字,对吗?

标签: c# floating-point double bignum


【解决方案1】:

有几个数学函数,例如 Math.Truncate,当且仅当输入是整数时,它们返回与其输入相同的值。检查 double 是否恰好是整数的最简单方法是检查原始值与 Math.Truncate 或类似结果之间的相等性。

但是,您可能会对某些结果感到惊讶。 4.503599627370496E15 和所有更大的有限双精度数都是整数值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多