这是关于数字格式的这个问题的延续,并且与我之前关于获得非常具体的Mathematica输出到文本文件的问题有关.
我经常不得不在Mathematica中使用高精度来生成数据,但只需要相对较低的精度来实现可视化.我还希望存储数据以供以后使用,所有符号名称和数组结构都保持不变.为此,我一直在使用Save[],但有两个相关的问题.
高精度"污染"我的结果与多余的数字很难摆脱:
In[1] := b = SetPrecision[7, 50]; a = Pi/b
Out[1] := 0.44879895051282760549466334046850041202816705705358654585356351318683091518373`50.
In[2] := InputForm @ N[a, 6]
Out[2] := 0.44879895051282760549466334046850041203`6.
Run Code Online (Sandbox Code Playgroud)
我真的只需要0.448799.
4.72642364528438598726943'5.9999999999999999999999我通常不需要精度4.72642就足够了.这两者都会给文件大小带来很大的开销,虽然硬盘存储很便宜,但是后来将文件加载回Mathematica时,文件大小会产生巨大的差异.
因此,从例如aa包含不规则数组中的50位任意精度数字开始,是否有一种内置方式可以让我获得一个文本文件来读取这样的内容
aa = {{2.0437`4, 4.7276`4, ...}, ...}
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,我没有显示数字或跟踪数字的精确度或更改数字的精度问题.我遇到的问题是控制如何将数字写入文件.
使用N,NumberForm,OutputForm,InputForm,*Form,等,都不能正常工作与Save.并且Save是我能找到的唯一导出符号和数组结构的导出选项.Export并且Put*可以用于更好地控制格式,但它们不包括符号(并且在Export数组结构的情况下也丢失).