在C ++中:如何在小数点后打印数字。

时间:2018-12-15 17:05:23

标签: c++

在C ++中:如何在小数点后打印数字。 例如,我有这个浮点数(12.54),我想像这样打印它(0.54)。 谢谢你们。

3 个答案:

答案 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::floorstd::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