Рассмотрим следующие завершающие десятичные числа.
3.1 ^ 2 = 9,61
3,1 ^ 4 = 92,3521
3,1 ^ 8 = 8528,91037441
ниже показано, как Mathematica обрабатывает эти выражения
In[1]:= 3.1^2
Out[1]= 9.61
In[2]:= 3.1^4
Out[2]= 92.352
Пока все хорошо, но
In[3]:= 3.1^8
Out[3]= 8528.91
не обеспечивает достаточной точности.
Итак, давайте попробуем N [], NumberForm [] и DecimalForm [] с точностью 12
In[4]:= N[3.1^8,12]
Out[4]= 8528.91
In[5]:= NumberForm[3.1^8,12]
Out[5]= 8528.91037441
In[6]:= DecimalForm[3.1^8,12]
Out[6]= 8528.91037441
В этом случае DecimialForm [] и NumberForm [] работают как положено, ноN [] обеспечивало точность по умолчанию, равную 6, даже несмотря на то, что я попросил 12. Так что DecimalForm [] или NumberForm [] кажутся подходящими, если вы хотите получить точные результаты, когда входные значения заканчиваются десятичными дробями.
Далее рассмотрим рациональные числа с бесконечными повторяющимися десятичными числами, такими как 1/3.
In[7]:= N[1/3,20]
Out[7]= 0.33333333333333333333
In[9]:= NumberForm[1/3, 20]
Out[9]=
1/3
In[9]:= DecimalForm[1/3, 20]
Out[9]=
1/3
В отличие от предыдущего случая, N [], кажется, является правильным путем, в то время как NumberForm [] и DecimalForm [] делаютне соблюдайте точность.
Наконец, рассмотрим иррациональные числа, такие как Sqrt [2] и Pi.
In[10]:= N[Sqrt[2],20]
Out[10]= 1.4142135623730950488
In[11]:= NumberForm[Sqrt[2], 20]
Out[11]=
sqrt(2)
In[12]:= DecimalForm[Sqrt[2], 20]
Out[12]=
sqrt(2)
In[13]:= N[π^12,30]
Out[13]= 924269.181523374186222579170358
In[14]:= NumberForm[Pi^12,30]
Out[14]=
π^12
In[15]:= DecimalForm[Pi^12,30]
Out[15]=
π^12
В этих случаях N [] работает, а NumberForm [] и DecimalForm [] - нет.Тем не менее, обратите внимание, что N [] переключается на научное обозначение при π ^ 13, даже с большей точностью.Есть ли способ избежать этого переключения?
In[16]:= N[π^13,40]
Out[16]= 2.903677270613283404988596199487803130470*10^6
Так что, похоже, нет единого способа сформулировать, как получить десятичные числа с требуемой точностью и в то же время избежать научной нотации.Иногда работает N [], иногда работает DecimalForm [] или NumberForm [], а иногда кажется, что ничего не работает.
Я что-то пропустил или есть ошибки в системе?