【问题标题】:Division of two values results in 0两个值相除得到 0
【发布时间】:2025-07-24 12:00:02
【问题描述】:

我正在尝试对两个变量进行除法,但是当我想打印结果时,程序会打印出 0

te 程序正确打印了leadTime 和endAmount,但将monthlyAmount 打印为0。此外,如果我删除endAmount 和leadTime 周围的float64(),它将打印为0

var leadTime int
if currentAge < 45 {
    leadTime  = 120
} else if currentAge > 45 && currentAge < 55 {
    leadTime = 90
} else if currentAge > 55 {
    leadTime = 60
}
endAmount, _ := strconv.Atoi(amountAsString)

monthlyAmount:= (float64(endAmount) / float64(leadTime)
fmt.Println("leadTime :", leadTime )
fmt.Println("Total amount:", endAmount)
fmt.Println("monthlyAmount:", monthlyAmount)

使用我正在测试的标准输入,leadTime = 120 和 endAmount = 93735.00 所以monthlyAmount 应该是:781.13

【问题讨论】:

  • 此代码无法编译。请提供一个完整的工作示例。代码和语法错误中缺少变量声明。指向 Go Playground 的链接将大有帮助。

标签: go floating-point int division


【解决方案1】:

问题是您试图将浮动字符串转换为 int

endAmount, _ := strconv.Atoi(amountAsString)

这会产生错误,但您只是忽略了它。使用strconv.ParseFloat(amountAsString, 64) 解决您的问题。

检查 Playground example 以查看错误和工作代码

【讨论】:

  • 您也忽略了解决方案中的错误 :-)
  • 哦,我错过了,更新了示例。谢谢@colminator
最近更新 更多