【问题标题】:What's bigger than a long double? [closed]什么比长双更大? [关闭]
【发布时间】:2020-01-09 10:28:43
【问题描述】:

所以我试图找到1.25 ÷ (2 ✕ 10^-12) 的结果。 我第一次尝试用 python 做,但结果太大它返回一个负数。 所以我尝试在 C 中使用 long double,但仍然不够。

PS。我在 Linux Ubuntu 上使用 GCC v9.2.1

【问题讨论】:

标签: c double long-double variable-types


【解决方案1】:

看不出python有什么问题:

>>> 1.25 / (2 * 10**-12)
625000000000.0

【讨论】:

  • 当我将** 替换为^ 时,为什么会得到-0.0390625
  • 使用 2e-12 代替 2 * 10**-12
  • @VirtualCode 因为^ 是异或运算?
  • @lenik 是的,谢谢,@Blaze 在上面告诉我。但是,有些语言不是将^ 作为幂运算符吗?
  • @lenik 看看 APL。
【解决方案2】:

long long 不会比long double 大,但根据您的计算,没关系:

#include "stdio.h"
int main(){
    long long a = 1.25 / 2e-12;
    printf("%lld\n", a);
}

这将为我打印625000000000

【讨论】:

  • 当我使用^ 时,为什么结果不一样?
  • @VirtualCode 这是因为^ 运算符不是用于求幂,而是bitwise XOR10 ^ 126,因为它们的位模式分别是10101100,所以异或它们是0110,这是6 的位模式。
  • 2 ✕ 10^-12 = 2e-12,而不是2 * 10e-12。并且表达式以双精度完成。要在 long double 中执行操作,请使用 1.25L/2e-12L
  • 这不是正确的方法。 2e-122e-12l从十进制转换为内部浮点格式时可能会四舍五入,除法可能会向下舍入,结果不会是625000000000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2012-11-30
  • 2010-09-11
  • 2014-01-10
  • 2023-04-07
相关资源
最近更新 更多