文をC言語で使用して、.5
を0.5
として出力する必要があります。 次のコードを使用して簡単に実行できます。C言語での浮動小数点値の書式設定
printf("%03f", myfloatvalue);
しかし、状況はmyfloatvalue
は動的です。だから私はそれが3文字の数字かどうかわからない、それは.5
または.56
または.567
かもしれない。上記の場合、私は0.5
、0.56
、および0.567
として印刷する必要があります。
文をC言語で使用して、.5
を0.5
として出力する必要があります。 次のコードを使用して簡単に実行できます。C言語での浮動小数点値の書式設定
printf("%03f", myfloatvalue);
しかし、状況はmyfloatvalue
は動的です。だから私はそれが3文字の数字かどうかわからない、それは.5
または.56
または.567
かもしれない。上記の場合、私は0.5
、0.56
、および0.567
として印刷する必要があります。
フロリアンの答えに私のコメントに引き続き、"%0g"
の形式は、先行ゼロを、例えばとの最短表現を出力します
#include <stdio.h>
int main (void) {
float f[] = { .5, .56, .567 };
size_t n = sizeof f/sizeof *f;
for (size_t i = 0; i < n; i++)
printf ("%0g\n", f[i]);
return 0;
}
使用例/出力
$ ./bin/floatfmt
0.5
0.56
0.567
"%0g"と "%g"はどのように異なっていますか?最小の幅は指定されていないので、数値は埋め込まれません。 –
これは、小数点の前に** **の先頭に**をつけます。 ':)' Eg 'man printf' *" 0値は0で埋められます。d、i、o、u、x、X、a、A "e、E、f、F、g" * –
Cの標準では、「スペースパディングを実行するのではなく、フィールドの幅にパッドするために、先頭のゼロ(符号またはベースの表示に続く)を使用します。フィールドの幅は指定されていないので、パディングはありませんので、何もしません。 'printf("%g "、0.4);を試してテストすることができます。これは' .4'を出力すると思いますが、実際には '0.4'を出力すると思います。 –
%g
フロートの可能な限り短い表現を印刷します。
printf("%g",myfloatvalue);
ほとんど "%0g" 'はそれを行います。 –
@ DavidC.Rankin [同意しない](https://stackoverflow.com/questions/46263242/formatting-float-value-in-c-language#comment79493574_46263402)には、0が必要です。 – chux
私は..So iはprintfの( "%0 *のF"、場所、myfloatvalue)を使用することができます0.123456を表示する必要があります。 –
0.56または0.567の(正確な)浮動小数点表現はありません。 –