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

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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Kazuya
Kazuya am 9 Nov. 2018
コマンドウィンドウ上での double 型数値の表示形式を考えると、
にある選択肢しか取れないので、0.8 という表示はできません。もうすでに試しているように sprintf であれば文字列に変換した上で 0.8 と表示できますが、これでは用途に合いませんか?
A = 0.8;
str_g = sprintf('%g',A)
str_g =
'0.8'
  6 Kommentare
Akira Agata
Akira Agata am 28 Nov. 2018
Bearbeitet: Akira Agata am 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 am 29 Nov. 2018
御回答ありがとうございます。
ご提示いただいた方法でうまくいきそうです。
どうもありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu 数値型 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!