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

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

Iniciar sesión para comentar.

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (1)

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

Categorías

Más información sobre 数値型 en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!