Unikaj numerów MachinePrecision w Message

Oct 13 2020

Czy mogę zmienić wyjście, Messageaby nie wyświetlało MachinePrecisionliczb? Na przykład

Bleh::test = "test `1`";

To jest tolerowane:

Message[Bleh::test, 0.01]
(* Bleh::test -- test 0.01` *)

To nie jest:

xx = 0.01;
Do[xx += 0.04, {5}]
Message[Bleh::test, xx]
(* Bleh::test -- test 0.21000000000000002` *)

Czy istnieje sposób na Messagewyświetlenie tego zaokrąglenia jako:

xx
(* 0.21 *)

Odpowiedzi

4 MichaelE2 Oct 13 2020 at 08:44

ToStringwydaje się zaokrąglać dane wyjściowe, jak zwykle robi się to w komórkach wyjściowych (technicznie w OutputForm, co nie jest tym samym, co "Output"styl):

xx = 0.01;
Do[xx += 0.04, {5}]
Message[Bleh::test, ToString@xx]

Bleh :: test: test 0,21