Wolfram mathematica 正在抑制尾随的"&引用;在Mathematica的数值输出中

Wolfram mathematica 正在抑制尾随的"&引用;在Mathematica的数值输出中,wolfram-mathematica,Wolfram Mathematica,是否有一些简单的方法可以确保在转换为字符串时,近似数字(即带有Realhead的数字)不会有尾随“?我希望,如果他们只有小数点的情况下,实际上有一个显示的小数部分 我发现的解决方案并不可靠,它们依赖于以一种笨拙的方式同时使用精度和精度,数字格式,或者以一种更加笨拙的方式使用实数字 提前谢谢。我可能只是对字符串进行后期处理。只检查最后一个字符是否为“.”比进行冗余运算并考虑所有精度设置更快(更容易) 编辑:也许你知道这一点,但你可以这样做: userToString[expr_, form___]

是否有一些简单的方法可以确保在转换为字符串时,近似数字(即带有
Real
head的数字)不会有尾随“?我希望,如果他们只有小数点的情况下,实际上有一个显示的小数部分

我发现的解决方案并不可靠,它们依赖于以一种笨拙的方式同时使用
精度
精度
数字格式
,或者以一种更加笨拙的方式使用
实数字


提前谢谢。

我可能只是对字符串进行后期处理。只检查最后一个字符是否为“.”比进行冗余运算并考虑所有精度设置更快(更容易)

编辑:也许你知道这一点,但你可以这样做:

userToString[expr_, form___] := ToString[expr,form];

userToString[expr_Real, form___] := removeTrailingDot[ToString[expr,form]];

我过去在用数字显示数字时使用过:

Integerise[x_] := If[Round[x] == x, ToString[Round@x] <> ".0", ToString@x]
通过测试:

NormalNumber /@ {5, 5.5, 123.001, 123.0001}
这可以整合到上面的
Integerise
中,以解决注意到的问题。

我建议:

shownum[x_] := StringReplace[ToString@NumberForm[x, ExponentFunction->(Null&)], 
                             RegularExpression["\\.$"]->""]
它只是在后面的“.”上执行正则表达式搜索和替换。如果希望“123.”显示为“123.0”而不是“123”,则只需将最后的空字符串替换为“.0”

更新:Mathematica默认以科学记数法显示的数字的原始版本显示错误。 我用数字形式解决了这个问题

这是我在现实生活中实际使用的版本。它允许选择四舍五入:

(* Show Number. Convert to string w/ no trailing dot. Round to the nearest r. *)
Unprotect[Round];   Round[x_,0] := x;   Protect[Round];
re = RegularExpression;
shn[x_, r_:0] := StringReplace[
  ToString@NumberForm[Round[N@x,r], ExponentFunction->(Null&)], re@"\\.$"->""]

函数
数字表单
科学表单
工程表单
,等等。。。提供选项
NumberFormat
以格式化和排列数字的尾数、基数和指数。与

numberTrim[expr_] := NumberForm[expr,
   NumberFormat -> (Row[{StringTrim[#1, "."], 
        If[#3 == "", "", "\[ThinSpace]\[Times]\[ThinSpace]" <> #2^#3]}] &)];
numberTrim[expr\]:=NumberForm[expr,
NumberFormat->(第[{StringTrim[#1,“.”行),
如果[#3==“”,“”,“\[ThinSpace]\[Times]\[ThinSpace]”[ThinSpace],[2^[3]}]&];

默认Mathematica输出被复制,但尾随点被删除。

我刚刚尝试了这个,发现它为Integerise[123.0001]中断(它返回一个以尾随“.”结尾的字符串)。这在我的回答中扮演了removeTrailingDot的角色。另外,虽然我当然是正则表达式的超级粉丝,但直接进行字符串操作会更快——检查最后一个字符,如果它是“.”,则删除它。当然,正则表达式的定制速度更快,也许速度不是问题——但这种函数可以多次被重复调用。(你也可以编译这个函数——我不知道这是否适用于正则表达式)
numberTrim[expr_] := NumberForm[expr,
   NumberFormat -> (Row[{StringTrim[#1, "."], 
        If[#3 == "", "", "\[ThinSpace]\[Times]\[ThinSpace]" <> #2^#3]}] &)];