package main import ( "fmt" ) func main() { var intA int = 10 var intB int = 9 var floatA float64 = 10 var floatB float64 = 9 //在 Go 语言中,操作数的类型必须匹配。也就是说,进行运算时,操作数的类型必须一致或能够进行合理的转换。 //具体来说,在你的代码中,你试图将一个 float64 类型的值与一个 int 类型的值进行除法运算,而 Go 语言不允许直接进行这种类型不匹配的运算。 fmt.Println(intA / intB) // 结果应为int类型 1 解释: 1.1111111111向下取整为 1 fmt.Println(intA / intB * 9) // 结果应为int类型 9 解释: 9.9999999999向下取整为 9 fmt.Println(intA / intB * 9.000) // 结果应为int类型 9 解释: 9.9999999999向下取整为 9 //fmt.Println(intA / intB * 9.9) // error 9.9 (untyped float constant) truncated to int //fmt.Println(10.1 / intB) // error 10.1 (untyped float constant) truncated to int fmt.Println("---------------------") fmt.Println(10.0 / 9) // 结果应为float类型 1.1111111111111112 fmt.Println(10.0 / intB) // 结果应为int类型 1 //fmt.Println(10.1 / intB) // error 10.1 (untyped float constant) truncated to int fmt.Println(10.1 / floatB) // 结果应为float类型 1.1222222222222222 fmt.Println("---------------------") fmt.Println(floatA / floatB) // 结果应为float类型 1.1111111111111112 fmt.Println(floatA / 9) // 结果应为float类型 1.1111111111111112 // 特别注意这种情况 fmt.Println((2.5 + 7.5) / intB) // 结果应为int类型 1 解释: 1.1111111111111112向下取整为 1 fmt.Println((2.5 + 7.5) / floatB) // 结果应为float类型 1.1111111111111112 //fmt.Println((2.5 + 7.6) / intB) // error (2.5 + 7.6) (untyped float constant 10.1) truncated to int //temp := 2.5 + 7.5 //fmt.Println(temp / intB) // error invalid operation: temp / intB (mismatched types float64 and int) // 不明确的数据计算结果类型(10.0 9.0 等)会根据后面已明确的类型进行转换 } // 当在表达式中混合使用整数和浮点数时,Go 会尝试自动进行类型转换,但只有在不会导致数据丢失的情况下才会这样做。 // 当你看到类似 truncated to int 的错误时,这通常意味着 Go 试图将一个浮点数转换为整数,但转换过程中丢失了小数部分。 // 在进行除法运算时,特别是当涉及到整数时,要特别注意结果是否如你所期望的那样进行了取整。
go 的加减乘除运算注意事项,及相互转化问题
基础语法
2024-08-15
admin
161
217
如果文章对您有帮助,点击下方的广告,支持一下作者吧!
转载必须注明出处: