我有2个字段必须相乘。一个是*float32
字段,另一个是int
字段。如何将这些字段相乘?
var totalPrice *float32
var price *float32
var volume int
此代码无效。我收到错误消息... mismatched types *float32 ...
totalPrice = price * volume
答案 0 :(得分:1)
您需要像使用explained quickly here一样使用类型转换进行转换。在这种情况下,正如mkopriva在其注释中突出显示的那样,您应该将volume
变量的值转换为float32。
还允许显示一种处理在应用程序级别中具有含义的nil值的方法,为此,我编写了带有第二个参数的float32PtrToFloat(* float32,float32),该参数允许您指定应采用哪个值代替零。
假设一个零值转换为零值,下面是完整的示例
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用作当前货币的下限值,例如: