MST

星途 面试题库

面试题:Go语言中基本类型转换的常见注意事项

在Go语言中,将一个float64类型变量转换为int类型时,会发生什么情况?请举例说明可能存在的数据精度损失,并阐述在这种类型转换时需要注意的要点。
41.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 转换情况:在Go语言中,将float64类型变量转换为int类型时,小数部分会被截断,只保留整数部分。
  2. 数据精度损失示例
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通常范围是-21474836482147483647,若float64值超出此范围进行转换,结果是不可预测的。