我如何在 qb64 (1 / (2.718282 ^ 110)) + 1 中进行此计算以获得正确答案?

Posted

技术标签:

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

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

【问题讨论】:

你期待什么结果? 1,000000 大于 1 【参考方案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。

以上是关于我如何在 qb64 (1 / (2.718282 ^ 110)) + 1 中进行此计算以获得正确答案?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写qb64项目符号

在 QB64 中捕获 Alt-F4

如何在后端运行 QB64

我正在尝试在基于 QB64 Txt 的冒险中创建一个调平系统

WinAPI STARTUPINFO 64 位 (QB64) 的字节打包

使用 QB64 将值保存在 .txt 文档中