Azzera filtri
Azzera filtri

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

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

Accedi per commentare.

Risposta accettata

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

Accedi per commentare.

Più risposte (1)

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

Categorie

Scopri di più su 数値型 in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!