MST

星途 面试题库

面试题:Go中浮点数精度问题在基本运算中的体现

在Go语言中,写出一段代码展示浮点数在简单加法运算时可能出现的精度问题,并解释为何会出现这种情况。
11.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func main() {
    a := 0.1
    b := 0.2
    sum := a + b
    fmt.Printf("%.17f\n", sum)
}

浮点数在简单加法运算时出现精度问题,是因为计算机使用二进制来存储数字,而像 0.10.2 这样的十进制小数无法精确地用二进制表示。例如,0.1 的二进制表示是一个无限循环小数 0.00011001100110011...,计算机存储时只能截取一定长度,这就导致了精度损失。在进行加法运算时,这些近似值运算后,就会出现如 0.1 + 0.2 结果不是精确的 0.3,而是 0.30000000000000004 的情况。