【问题标题】:How do i make this calculation in qb64 (1 / (2.718282 ^ 110)) + 1 to get the right answer?我如何在 qb64 (1 / (2.718282 ^ 110)) + 1 中进行此计算以获得正确答案?
【发布时间】:2018-03-28 21:50:10
【问题描述】:

如何在 qb64 (1 / (2.718282 ^ 110)) + 1 中进行此计算以获得正确答案?因为它一直告诉我答案是 1。

【问题讨论】:

  • 你期待什么结果?
  • 1,000000 大于 1

标签: qb64


【解决方案1】:

e^110 是一个非常大的数字。因此,1/(e^110) 非常接近于零。添加1,得到的结果与qb64相同。

WolframAlpha确认。

QuickBasic 可能由于准确性有限而四舍五入。

【讨论】:

  • 我知道,但也许有一种方法可以使用 DIM m AS _MEM 来提高准确性
  • 我没有QuickBasic 进行实验。您可以尝试使用CDBL() 转换函数将所有操作数转换为DOUBLE。这应该会提高准确性。据我所知,^ 运算符无论如何都与DOUBLE 精度一起使用。但是如果没有一个无限精确的库,总会有一些舍入。
  • 不,它给了我 1/2.718282^110 = 1.688900156341D-4B 但是当我加 1 时,答案仍然是 1
  • 你的表达式的第一部分是1.688E-48,因此,结果需要超过49的有效数字。这远远超出了任何袖珍计算器或普通单/双浮点算术所能表达的范围。
  • 由于 QB 中变量的默认精度是单一的,那么您的精度将是 7 位数。如果声明为 double,它将变为 15 位。小数点右边的任何数量的 0 都超出了,然后将其四舍五入为 .0,加 1 返回 1。
猜你喜欢
  • 2019-08-19
  • 2020-10-29
  • 2020-04-01
  • 2014-02-16
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
相关资源
最近更新 更多