转到规格:转化:
数字类型之间的转换
将浮点数转换为整数时,将舍弃小数(截断为零)。
因此,基本上,当您将浮点数转换为整数时,仅保留整数部分。
如果您只是想避免因用有限位表示而引起的错误,请在将
0.5数字转换为之前添加到数字
int。不需要外部库或函数调用(来自标准库)。
由于
float -> int转换 不是舍入 而是 保留整数部分 ,这将为您提供所需的结果。考虑到可能更大或更小的表示形式:
1002.9999 + 0.5 = 1003.4999; integer part: 10031003.0001 + 0.5 = 1003.5001; integer part: 1003
所以只需写:
var f float64 = 1.003fmt.Println(int(f * 1000 + 0.5))
要将其包装到函数中:
func toint(f float64) int { return int(f + 0.5)}// Using it:fmt.Println(toint(f * 1000))在Go Playground上尝试一下。
注意:
当您使用负数时请小心!例如,如果您的值为
-1.003,则可能希望结果为
-1003。但是,如果添加
0.5到它:
-1002.9999 + 0.5 = -1002.4999; integer part: -1002-1003.0001 + 0.5 = -1002.5001; integer part: -1002
因此,如果您有负数,则必须:
- 减去
0.5
而不是加 - 或从结果中
0.5
减去1
将其整合到我们的辅助函数中:
func toint(f float64) int { if f < 0 { return int(f - 0.5) } return int(f + 0.5)}


