在C#中,我可以执行以下操作:
Console.Write("{0}, ", string.Format("{0:0.00###########}", someFloatValue));
对于某个任意浮点值,至少获得2个小数位,直至达到一定数量的可选小数位,在这种情况下为13。
我想知道在C中使用printf是否可能实现同样的目的?
舍弃尾随零位数字。
void formatDouble(char* buf, double val, int precMin, int precMax) {
int length = sprintf(buf, "%.*f", precMax, val);
if (isfinite(val) && length > 0) {
for (int i = precMax; i > precMin; i--) {
if (buf[length - 1] == '0') {
buf[--length] = '\0';
} else {
break;
}
}
}
}
void fooo(double d) {
char buf[100];
formatDouble(buf, d, 2,6);
printf("<%s>\n", buf);
}
int main(void) {
fooo(0.1234567890);
fooo(0.123450);
fooo(0.12300);
}
输出量
<0.123457>
<0.12345>
<0.123>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句