我如何在 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 Txt 的冒险中创建一个调平系统