我有一个 float 数组,其中数据存储有不同的小数点,所以有些是 123.40000
、123.45000
、123.45600
...现在如果我想在 printf()
中打印最后不带 0 的字符串中的这些值,则它们是 123.4
、123.45
、123.456
,最后没有那些 0。这可能吗?如果是,怎么办?
最佳答案
使用 %g 格式化程序:
printf( "%g", 123.4000 );
打印
123.4
尾随零被移除,但不幸的是,如果小数部分为零,尾随小数点也会被移除。我不知道是否真的有任何方法可以直接使用 printf() 做你想做的事——我认为这样的事情可能是你最好的选择:
#include <stdio.h>
#include <math.h>
void print( FILE * f, double d ) {
if ( d - floor(d) == 0.0 ) {
fprintf( f, "%g.", d );
}
else {
fprintf( f, "%g", d );
}
}
int main() {
print( stdout, 12.0 );
print( stdout, 12.300 );
}
关于c - printf() 中的浮点格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863602/