面试题答案
一键面试- 转换情况:在Go语言中,将
float64
类型变量转换为int
类型时,小数部分会被截断,只保留整数部分。 - 数据精度损失示例:
package main
import (
"fmt"
)
func main() {
num1 := 3.14159
num2 := -2.99
intNum1 := int(num1)
intNum2 := int(num2)
fmt.Printf("将 %.5f 转换为 int 后: %d\n", num1, intNum1)
fmt.Printf("将 %.2f 转换为 int 后: %d\n", num2, intNum2)
}
在上述代码中,3.14159
转换为int
后变为3
,-2.99
转换为int
后变为-2
,小数部分均被截断,造成数据精度损失。
3. 注意要点:
- 精度损失:转换时会丢失小数部分,在涉及货币计算、科学计算等对精度要求较高的场景下,需要谨慎使用这种转换,以免造成计算结果不准确。
- 溢出问题:如果float64
的值超出了int
类型的表示范围,转换会导致未定义行为。例如在32位系统上int
通常范围是-2147483648
到2147483647
,若float64
值超出此范围进行转换,结果是不可预测的。