我想将浮点数左侧的数字放在一个新变量中 来自浮点数:
int var1;
float var2;
float x=12.505; // i want the number 12 to put it in "var1" and 0.505 in "var2"
答案 0 :(得分:7)
如果您知道将浮点值转换为整数时,它非常简单,它只是截断浮点值。所以你可以简单地做
var1 = x; // Assign 12 to var1
var2 = x - var1; // Assigns 12.505 - 12 to var2
答案 1 :(得分:7)
var1 = x; // var1 is 12
var2 = x - var1; // var2 is 0.505
请注意,
如果转换是从浮点类型转换为整数类型,则会截断该值(删除小数部分)。如果结果位于类型的可表示值范围之外,则转换会导致未定义的行为。
详细了解Type conversions。
答案 2 :(得分:1)
您可以使用以下选项之一将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 namespace中的头文件中。
答案 3 :(得分:0)
有各种各样的方式。
对于某种方法,请在标准标题modf()
<math.h>
答案 4 :(得分:0)
只需使用自动截断功能。
float f = 12.93;
int b = f; // 12
float p = f - b // 0.93