c - 将 float 类型转换为 int

标签 c type-conversion

我使用此代码从用户那里获取 float 输入。

1. float change = Getfloat();
2. change *= 100;
3. int remainder = change;

但是,当用户输入 4.2 时,第 2 行将变量更改为 419.999969,并且该行以 419 结尾。 如何更改程序,使其有效地将 float 更改为 int。

最佳答案

一种方法是四舍五入到最接近的值。简单的版本是

change = (int)(change + 0.5);

(这将在步骤 2 和 3 之间进行。)它会将任何小于 0.5 的值向下舍入,并将任何大于或等于 0.5 的值向上舍入。

如果您想要对负数进行四舍五入,或者想要四舍五入到最接近的 1 以外的值,则可能会出现其他复杂情况,但这应该可以帮助您入门。

关于c - 将 float 类型转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278187/

相关文章:

c - 使用 const 运算符发出警告(在结构中)

c - 在 C 中求解用户输入的方程式

c++ - 是否可以将 vector<shared_ptr<T>> 传递给 const vector<shared_ptr<const T>>& 参数?

flutter - 类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型转换中类型 'Map<String, String>' 的子类型

arrays - 如何在 C 编程中将 char 数组转换为 int 数组?

c - 将用户输入传递给 fopen() 参数 c

c++ - 为什么 GCC --gc-sections 和 -ffunction-sections 不起作用? (构建)

c - 通过结构检查缓冲区

Swift - 如果用户输入 1 到 100,则显示随机消息

C++ 编译器可以默默地接受错误的转换并引入不可预测的错误