MST

星途 面试题库

面试题:Go中math包如何在基本数值计算中控制精度

在Go语言中,使用math包进行浮点数加法计算1.1 + 2.2,由于浮点数精度问题,结果可能不准确。请编写代码,利用math包的相关功能,尽量精确地得到这个加法运算的结果,并解释实现原理。
23.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "math/big"
)

func main() {
    num1 := big.NewFloat(1.1)
    num2 := big.NewFloat(2.2)
    result, _ := num1.Add(num1, num2).Float64()
    fmt.Println(result)
}

实现原理:在Go语言中,math/big包提供了高精度算术的支持。big.Float类型可以表示任意精度的浮点数。上述代码首先使用big.NewFloat函数将两个浮点数1.1和2.2转换为big.Float类型,然后使用Add方法对这两个高精度浮点数进行加法运算,最后通过Float64方法将高精度计算结果转换回普通的float64类型并输出。这种方式通过使用高精度运算,避免了普通float64类型因精度问题导致的计算不准确。