sprintf和snprintf都剥离了我的小数的最后两位数字。它无法封装我的双重值。
代码:
int main(void)
{
char command[70];
char sendbuy[12];
double biggestMark2;
biggestMark2 = 0.00550006;
sprintf(sendbuy,"%lf",biggestMark2);
//snprintf(command, sizeof command, "php oin.php 155 %s", sendbuy);
sprintf(command, "php oin.php 155 %s",sendbuy);
cout << command << endl;
cout << biggestMark2 << endl;
}
输出:
# ./veryTemp.o
php oin.php 155 0.005500
0.00550006
预期产出:
# ./veryTemp.o
php oin.php 155 0.00550006
0.00550006
如何将所有数字输入命令变量?
答案 0 :(得分:1)
打印浮点的默认精度为6,如标准中所述:
7.21.6.1 p8:
F,F
表示浮点数的双参数将转换为 样式[ - ] ddd.ddd中的十进制表示法,其后的位数 小数点字符等于精度规格。
If the precision is missing, it is taken as 6;
如果精度为零且#flag为 未指定,不显示小数点字符。 如果是小数点 出现字符,至少出现一个数字。该值四舍五入为 适当的位数。
答案 1 :(得分:0)
在格式化程序中,%。8f将给出8的精度。它已修复,因此添加额外的精度会被填充0。
答案 2 :(得分:0)
如果您使用的是C ++,请使用C ++:
int main(void)
{
double biggestMark2 = 0.00550006;
cout << "php oin.php 155 " << setprecision(10) << biggestMark2 << endl;
}
您在这里寻找的是调整双打格式的setprecision()
调用。
此处没有静态缓冲区,没有缓冲区溢出。它没有比这更容易。