小数点表示をしたい(ただし、後0は付加しない)

49 views (last 30 days)
yuuji yamada
yuuji yamada on 31 Oct 2018
Commented: yuuji yamada on 29 Nov 2018
任意の小数値Aに後0(小数点の末尾の0)が付かないように表示させたいと思っています。 下記のようにするとstr_g ='4.5036e+15'という形式で表示されてしまいました。 小数で且つ、後0(小数点の末尾の0)が付かないようにするにはどうすればよいでしょうか。
str_g = sprintf('%g',A);
Matlab2018aを使用しています。
  2 Comments
Kazuya
Kazuya on 4 Nov 2018
質問の意図が読み切れませんでしたが、、コマンドウィンドウでの出力表示を
>> A = 0.8
A =
0.8000
となるところを
0.8
とだけ表示させたいということですか?
yuuji yamada
yuuji yamada on 8 Nov 2018
はい。 小数点A=0.8000 を A=8e-1 というような記法をさせない、且つ、A = 0.8 と表示させたいということです。

Sign in to comment.

Accepted Answer

Kazuya
Kazuya on 9 Nov 2018
コマンドウィンドウ上での double 型数値の表示形式を考えると、
にある選択肢しか取れないので、0.8 という表示はできません。もうすでに試しているように sprintf であれば文字列に変換した上で 0.8 と表示できますが、これでは用途に合いませんか?
A = 0.8;
str_g = sprintf('%g',A)
str_g =
'0.8'
  6 Comments
Akira Agata
Akira Agata on 28 Nov 2018
Edited: Akira Agata on 28 Nov 2018
数値を有効数字n桁の文字列として出力した後、もし末尾に1個以上の 0 があれば除去して表示する、という方法ではどうでしょうか。
例えば、以下のようにすると、対象となる数値Aが 0 以上 1 以下の場合に、有効数字3桁の文字列として出力することができます。
A = pi*1e-4; % 数値の一例
n = -1*floor(log10(A))+2;
format = ['%.',num2str(n),'f'];
str = sprintf(format,A);
str = regexprep(str,'0+$','');
>> str
str =
'0.000314'
yuuji yamada
yuuji yamada on 29 Nov 2018
御回答ありがとうございます。
ご提示いただいた方法でうまくいきそうです。
どうもありがとうございました。

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 31 Oct 2018
isfloat(4.5036e+15)
if it returns 1 , then its a decimal value

Categories

Find more on 数値型 in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!