登录
首页 >  Golang >  Go问答

计算浮点数和整数的乘积

来源:stackoverflow

时间:2024-03-15 14:06:31 150浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《计算浮点数和整数的乘积》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我有 2 个字段需要相乘。一个是 *float32 字段,另一个是 int 字段。我怎样才能将这些字段相乘?

var totalPrice *float32
var price *float32
var volume int

此代码不起作用。我收到错误... mismatched types *float32 ...

总价格 = 价格 * 数量


解决方案


您需要使用类型转换进行转换,如 explained quickly here。在这种情况下,正如 mkopriva 在他的评论中强调的那样,您应该将 volume 变量的值转换为 float32。

还允许展示一种处理在应用程序级别有意义的 nil 值的方法,因为我编写了 float32ptrtofloat(*float32,float32) ,其中第二个参数允许您指定应取什么值为零。

假设 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 作为当前货币的较低值,例如:

  • 1 = 1 便士(或)
  • 1 = 1 美分(或)
  • 1 = 1 分(就我而言)

以上就是《计算浮点数和整数的乘积》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>