浮点数转换 C++

float number casting c++

我想把浮点数左边的数字放到一个新变量中 来自浮点数 ex:

int var1;
float var2;
float x=12.505;     // i want the number 12 to put it in "var1" and 0.505 in "var2"

如果您知道将浮点值转换为整数时,它只是截断浮点值,就非常简单了。所以你可以简单地做

var1 = x;  // Assign 12 to var1
var2 = x - var1;  // Assigns 12.505 - 12 to var2
var1 = x; // var1 is 12
var2 = x - var1; // var2 is 0.505

Run live.

请注意,

If the conversion is from a floating-point type to an integer type, the value is truncated (the decimal part is removed). If the result lies outside the range of representable values by the type, the conversion causes undefined behavior.

详细了解 Type conversions

方法多种多样

对于一种方法,在标准 header <math.h>

中查找函数 modf()

您可以使用以下选项之一将 float 转换为 int:

var1 = (int)x;
var1 = static_cast<int>(x);
var1 = int(x);

所有这些选项都是相同的。此外,您可以使用隐式转换,但它可能会导致编译警告或错误,具体取决于您的编译器设置:

var1 = x;

转换后您需要计算小数部分:

var2 = x - var1;

请注意,直接转换为 int 会截断小数部分,我的意思是,

(int)(12.505) == 12
(int)(12.499) == 12
(int)(-12.55) == -12
(int)(-12.49) == -12

如果您需要一些其他方法来舍入数字,请使用 ceil()、floor() 或 round()。这些函数位于 std 命名空间的头文件中。

只需使用自动截断功能。

float f = 12.93;

int b   = f;      // 12
float p = f - b   // 0.93