文字列に変換したときに、おおよその数字 (つまり、Real
頭のある数字) の末尾に "." がないことを確認する簡単な方法はありますか? 実際に小数部が表示されている場合は、小数点のみを表示してほしいです。
私が見つけた解決策は堅牢ではなく、 と をぎこちない方法で一緒に使用するかPrecision
、Accuracy
さらに厄介な方法で使用することに依存しています。NumberForm
RealDigits
前もって感謝します。
文字列に変換したときに、おおよその数字 (つまり、Real
頭のある数字) の末尾に "." がないことを確認する簡単な方法はありますか? 実際に小数部が表示されている場合は、小数点のみを表示してほしいです。
私が見つけた解決策は堅牢ではなく、 と をぎこちない方法で一緒に使用するかPrecision
、Accuracy
さらに厄介な方法で使用することに依存しています。NumberForm
RealDigits
前もって感謝します。
過去に数値を図で表示するときにこれを使用しました:
Integerise[x_] := If[Round[x] == x, ToString[Round@x] <> ".0", ToString@x]
<> ".0"
小数点以下ゼロで整数を表示したくない場合は、単に削除してください。
更新:コメントで dreeves が述べたToString
ように、整数の 0.0001 以内の数値を切り捨て、ドットを表示します。
末尾のドットを削除するより良い方法はInputform
、ToString の形式を使用することです。
NormalNumber[x_] := ToString[x, InputForm]
テストで:
NormalNumber /@ {5, 5.5, 123.001, 123.0001}
Integerise
上記の問題を修正するために、これを上記に組み込むことができます。
私はこれをお勧めします:
shownum[x_] := StringReplace[ToString@NumberForm[x, ExponentFunction->(Null&)],
RegularExpression["\\.$"]->""]
末尾の「。」で正規表現の検索と置換を行うだけです。「123」をご希望の場合。「123」ではなく「123.0」として表示するには、最後の空の文字列を「.0」に置き換えます。
更新: Mathematica がデフォルトで科学表記法で表示する数値について、私の元のバージョンは間違って表示されました。NumberFormでそれを修正しました。
これが私が実際に実際に使用しているバージョンです。オプションの丸めが可能です。
(* 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@"\\.$"->""]
文字列を後処理するだけでしょう。最後の文字が「。」であるかどうかを確認する方が高速です(そしてはるかに簡単です)。冗長な演算を行い、すべての精度設定を考慮するよりも。
編集:多分あなたはこれを知っています、しかしあなたはこのようなことをすることができます:
userToString[expr_, form___] := ToString[expr,form];
userToString[expr_Real, form___] := removeTrailingDot[ToString[expr,form]];
関数NumberForm
、ScientificForm
、EngineeringForm
など ... はNumberFormat
、数値の仮数、基数、指数をフォーマットして配置するオプションを提供します。と
numberTrim[expr_] := NumberForm[expr,
NumberFormat -> (Row[{StringTrim[#1, "."],
If[#3 == "", "", "\[ThinSpace]\[Times]\[ThinSpace]" <> #2^#3]}] &)];
デフォルトの Mathematica 出力が再現されますが、末尾のドットは削除されます。