doucan8049 2015-05-27 09:35 采纳率: 100%
浏览 109

int16数字加上golang中的float64

I want to do a simple thing:

func (this *ScoreProvider) getScore()(res float64) {
    var score1 int16 = 500
    var score2 int16 = 400
    var score3 int16 = 300
    var score4 int16 = 200
    res = score1 * 0.25 + score2 * 0.25 + score3 * 0.25 + score4 * 0.25

    return
}

But this reports an error:

can not use score1 * 0 + score2 * 0 + score3 * 0 + score4 * 0 (type int16) as type float64 in assignment

How can I do this right?

  • 写回答

3条回答 默认 最新

  • dtgvl48608 2015-05-27 09:42
    关注

    Your constants (0.25) are being truncated to intergers (0).

    Two ways to solve:

    cast the score1 etc variables to float32:

    var score1 int16 = 500
    var score2 int16 = 400
    var score3 int16 = 300
    var score4 int16 = 200
    res := float32(score1)*0.25 + float32(score2)*0.25 + float32(score3)*0.25 + float32(score4)*0.25
    
    fmt.Println("Score", res)
    

    or more sensible, instead of declaring them as int16 declare them as float32 to begin with:

    var score1a float32 = 500
    var score2a float32 = 400
    var score3a float32 = 300
    var score4a float32 = 200
    res2 := score1a * 0.25 + score2a * 0.25 + score3a * 0.25 + score4a * 0.25
    
    fmt.Println("Result 1", res)
    fmt.Println("Result 2", res2)
    

    On the Go Playground

    评论

报告相同问题?

悬赏问题

  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?