Go 中实现浮点除法与小数位控制(四舍五入到4位小数)

本文详解如何在 Go 语言中正确执行浮点除法运算,并使用格式化输出将结果精确控制在 4 位小数(自动四舍五入),避免整数除法导致的精度丢失。

本文详解如何在 Go 语言中正确执行浮点除法运算,并使用格式化输出将结果精确控制在 4 位小数(自动四舍五入),避免整数除法导致的精度丢失。

在 Go 中,int / int 运算默认执行整数除法,结果直接截断小数部分(非四舍五入),例如 190 / 13 得到 14,而非 14.6153...。若需保留小数精度,必须显式将操作数转换为浮点类型(如 float64),再进行运算,并通过 fmt.Printf 的动词格式控制输出精度。

✅ 正确做法:类型转换 + 格式化输出

核心修改仅两处:

以下是完整、健壮的修正代码:

package main

import (
    "fmt"
    "bufio"
    "os"
    "strconv"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)

    fmt.Print("Insert y value: ")
    if !scanner.Scan() {
        fmt.Println("Error reading y")
        return
    }
    yStr := scanner.Text()

    fmt.Print("Insert x value: ")
    if !scanner.Scan() {
        fmt.Println("Error reading x")
        return
    }
    xStr := scanner.Text()

    y, err := strconv.Atoi(yStr)
    if err != nil {
        fmt.Printf("Invalid y input: %v\n", err)
        return
    }

    x, err := strconv.Atoi(xStr)
    if err != nil {
        fmt.Printf("Invalid x input: %v\n", err)
        return
    }

    if x == 0 {
        fmt.Println("Error: division by zero")
        return
    }

    slope := float64(y) / float64(x)
    fmt.Printf("%.4f\n", slope) // 自动四舍五入至小数点后4位
}

⚠️ 注意事项

✅ 验证示例

输入:

Insert y value: 190
Insert x value: 13

输出:

14.6154

该方案简洁、安全、符合 Go 最佳实践,适用于所有需要高精度商值显示的场景。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。