在C ++中:如何在小数点后打印数字。 例如,我有这个浮点数(12.54),我想像这样打印它(0.54)。 谢谢你们。
答案 0 :(得分:3)
您可以使用modf
功能。
double integral_part;
double fractional = modf(some_double, &integral_part);
您也可以将其强制转换为整数,但是请注意,该整数可能会溢出。那时的结果是不可预测的。
答案 1 :(得分:3)
最简单的方法
float f = 10.123;
float fract = f - (int)f;
std::cout << fract;
但是对于大量输入,您可以获得整数溢出。在这种情况下,请使用
float fract = f - truncf(f);
输出
0.123
答案 2 :(得分:1)
在C ++中:如何在小数点后打印数字。例如我有 这个浮点数(12.54),我想像这样打印它(0.54 )。
如果要使用获取浮点型数字的小数部分,可以选择std::floor
或std::trunc
。非负数将被两者相同,但负数将不被处理。
std::floor
返回最低的非小数值,而std::trunc
返回非零的零。
double f=1.23;
floor(f); // yields .23
trunc(1.23); // also yields .23
但是
double f=-1.23;
floor(f); // yields -2
trunc(f); // but yields -1
因此,使用trunc
可以得到正f和负f的小数部分:
double f=-1.23;
f - floor(f); // yields .77
f - trunc(f); // but yields -.23