Тебе действительно нужны такие вещи, как 2.0437`4, или машины будет достаточно двойного 2.0437?Если последнее, то вы могли бы сделать что-то вроде
N[SetPrecision[values,6]]
, чтобы привести к машинным двойникам, которые будут (в основном) показывать шесть десятичных цифр.
Возможное преимущество заключается в его чтении.Ваш массив теперь будет двойником машин, следовательно, может быть упакован.Я не уверен, что Get или Import автоматически упакуют, но Developer`ToPackedArray сделает это.
--- edit 2011-02-11 ---
Теперь, когда я увидел, что может пойти не так ...
Вот пример, использующий ваш более поздний вклад и несколько других, которые, я надеюсь, будут репрезентативными.
aa = {7.469702041097916467293771347613073888816285869`15.\
954589770191005*^-51, 5555.22222222222222222223,
.00000000002222222222222222222222222227777777777777, N[E, 22]^33}
Первое преобразованиев строку.Это может быть действительно все, что вы действительно хотите, для сохранения в файл.Я использую NumberForm, но с настраиваемой функцией форматирования (по большей части взятой со страниц документации).
In[39]:=
InputForm[ToString[
NumberForm[N[aa], 6,
NumberFormat :> (If[#3 != "", Row[{#1, "*^", #3}], #1] &)]]]
Out[39]//InputForm=
"{7.4697*^-51, 5555.22, 2.22222*^-11, 2.14644*^14}"
Обратите внимание, что преобразование выражений прекрасно работает на этом.
In[40]:=
InputForm[ToExpression[
ToString[NumberForm[N[aa], 6,
NumberFormat :> (If[#3 != "", Row[{#1, "*^", #3}], #1] &)]]]]
Out[40]//InputForm=
{7.4697*^-51, 5555.22, 2.22222*^-11, 2.14644*^14}
--- конец редактирования ---
Даниэль Лихтблау Вольфрам Исследования