在UNIX中使用sprintf()
将double
值转换为字符串时,我遇到了一个特定问题。double值的sprintf格式化
比如我有两个值:
double a = 0.009984354523452;
double b = 0.01;
虽然转换,我使用:
sprintf(somestringvar, "Double value : %.15f \n", a);
sprintf(diffstringvar, "Double value : %.15f \n", b);
转换为字符串。
我的问题是'a',值正确打印,但'b'的值,0的尾部追加。请给我提供任何常用的方法来表示'a'和'b'为准确的值。
我会使用std :: ostringstream这种事情。 – Robinson 2012-04-26 06:21:12
一般来说,不要使用'sprintf()',因为它会导致缓冲区溢出。改为使用'snprintf()',或者Microsoft在Windows上提供的'_s'“安全”版本之一。附:欢迎来到堆栈溢出! – 2012-04-26 06:21:41
嗨,感谢您的早期回应。 ostringstream不是完全精确的。值仅打印为0.009976。我可以使用snprintf(),但问题是在正确打印值时。 – sandy 2012-04-26 07:01:24