亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go - 在將float轉換為int時如何舍入到最近的int

go - 在將float轉換為int時如何舍入到最近的int

Go
呼啦一陣風 2021-12-07 17:04:30
將 float 轉換為 int 時,將丟棄小數。什么是干凈的投射方式,以便它四舍五入到最接近的整數。x := int(3.6) 應該等于 4 而不是 3。
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

int(f+0.5) 如果 >= .5 會導致它向上舍入


查看完整回答
反對 回復 2021-12-07
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

int(math.Round(f))在 Go 中將浮點數轉換為 int 時,您可以使用舍入到最接近的整數。當浮點數設置為字節或符文時,小數也會被丟棄。當它設置為字符串或布爾值時,不會發生截斷。


package main


import (

  . "fmt"

  . "math"

)


func main() {

  f := 3.6

  c := []interface{}{byte(f), f, int(Round(f)), rune(f), Sprintf("%.f", f), f != 0}

  checkType(c)

}

func checkType(s []interface{}) {

  for k, _ := range s {

     Printf("%T %v\n", s[k], s[k])

  }

}

Round 返回最接近的整數,從零四舍五入。請參閱https://golang.org/pkg/math/#Round。請參閱https://stackoverflow.com/a/61503758/12817546。


f := 3.6截斷為“uint8 3”,f為“float64 3.6”,int(Round(f))向上舍入為“int 4”, rune(f)截斷為“int32 3”, Sprintf("%.f", f)為“string 3.6”并f != 0輸出“bool true”。


查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 533 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號