我有两个字段需要相乘。一个是*float32字段,另一个是int字段。如何将这些字段相乘?
var totalPrice *float32
var price *float32
var volume int此代码不起作用。我得到了错误... mismatched types *float32 ...
totalPrice = price * volume
发布于 2019-04-28 02:20:39
您需要像explained quickly here一样使用类型转换进行转换。在这种情况下,正如mkopriva在他评论中强调的那样,您应该将volume变量的值转换为float32。
还允许显示一种在应用程序级别具有意义的处理nil值的方法,为此,我使用第二个参数编写了float32PtrToFloat(*float32,float32),该参数允许您指定应该采用什么值来代替nil。
假设nil值转换为零值,下面是完整的示例
package main
import (
"fmt"
)
func main() {
var totalPrice *float32
var price *float32
var volume int
var total = float32PtrToFloat(price, 0) * float32(volume)
totalPrice = &total
fmt.Println(*totalPrice)
}
func float32PtrToFloat(price *float32, valueIfNil float32) float32 {
if price == nil {
return valueIfNil
} else {
return *price
}
}个人阅读,遵循JimB的建议,尽量不要使用浮点数作为货币值,因为浮点运算是不可靠的。取而代之的是使用整数值,使用1作为当前货币的下限值,例如:
https://stackoverflow.com/questions/55880818
复制相似问题