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

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

请先登录,再进行评论。

采纳的回答

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

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 数値型 的更多信息

Community Treasure Hunt

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

Start Hunting!