我必须将double值转换为CString才能在mfc列表框中显示它。在显示它之前,我需要将小数点格式设置为所需的位数。
例如,在这里我需要将double值格式化为2位数字
double a = 4217.088;
CString str;
str.Format("%.*lf",2,a);
此处,a的分配值为4217.088。我需要格式化的str值为4217.08,但小数点后的值取整为4217.09
我还尝试了如下所示的floor方法,但这也给了我相同的结果。
double b;
b = floor(a * 100) / 100;
是否有可能在不舍入小数点的情况下格式化双精度值。
答案 0 :(得分:2)
舍入根本不起作用。在您的情况下,数字8中的下一个数字大于5,因此会将下一个数字转换为9。 要解决您的问题,请使用以下代码解决问题:
double b = std::floor(a * 100.) / 100.;
答案 1 :(得分:1)
如果您想要简单的截断而不是四舍五入,则可以使用3个小数点进行格式化,然后截断结果:
mcc
但这也可行:
double a = 4217.088;
CString str;
str.Format("%.*lf", 3, a);
str = str.Left(str.GetLength() - 1);
// str contains now "4217.08"