【问题标题】:Preventing rounding of Mathematica expressions防止 Mathematica 表达式的舍入
【发布时间】:2013-11-09 12:40:53
【问题描述】:

使用 Mathematica 时,给出如下表达式:

In[429]:= 100*(1 - 0.002)^5*(1 - 0.005)*(1 - 0.006)*3.5
Out[430]= 342.7127137548418

我尝试使用 N[]、SetPrecision[] 等。根据website,我无法获得342.712713754841762864 的实际值。

如何防止 Mathematica 舍入结果?

【问题讨论】:

  • 您可以使用N[100*(1 - 2/1000)^5*(1 - 5/1000)*(1 - 6/1000)*35/10, 30],或者提供更精确的输入。
  • 但为什么 Mathematica 会在我使用浮点值后立即舍入我的结果?我仍然希望能够使用十进制值并获得精确的结果。如何提供更精确的输入?因为 SetPrecision 似乎无法解决问题。
  • 我的意思是,该网站似乎很好地处理了我的表达。为什么 Mathematica 不这样做?
  • 这在你问的最后一个问题中得到了很好的解决..stackoverflow.com/questions/19864033/…

标签: math wolfram-mathematica wolframalpha


【解决方案1】:

Idk,您是否已经找到了答案,但您可以FullForm 表达您的意见。我真的很震惊,在我的情况下准确计算 4852.95 + 14000 是如此困难。

【讨论】:

    【解决方案2】:

    可以,但不应该。

    如果您希望结果更加精确,您可以在所有十进制数字上输入123.456`digits of precision 来设置它们及其结果的精度。这会将您的原始表达式转换为诸如100*(1 - 0.002`25)^5*(1 - 0.005`25)*(1 - 0.006`25)*3.5`25 之类的内容,从而得到342.7127137548417628640000 的预期结果。但是请注意,Mathematica 主要适用于显式有理数,例如1/200,以获得准确的结果。但是,除了精度之外,我没有看到浮点值固有的其他问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2016-12-18
      相关资源
      最近更新 更多