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

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

將 float 常量類型轉換為 int 期間,常量被截斷為整數錯誤

將 float 常量類型轉換為 int 期間,常量被截斷為整數錯誤

Go
海綿寶寶撒 2023-07-31 14:58:34
以下代碼在“ var a int = int(1.333) ”行上引發錯誤“常量截斷為整數”。我是 GO 新手,無法找出實際問題。package mainimport (    "fmt"    "math")func main() {    var x, y int = 3, 4    const k float64=2.2    var a int = int(1.333)    var f float64 = math.Sqrt(float64(x*x+y*y))    var z uint = uint(f)    fmt.Println(x, y, z,a)}
查看完整描述

1 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

常量的轉換遵循與非常量的轉換不同的規則。

第一個非常數:

數值類型之間的轉換

對于非常量數值的轉換,適用以下規則:

  1. ...

  2. 將浮點數轉換為整數時,小數部分將被丟棄(向零截斷)。

  3. ...

所以這是可能的:

var?f?=?float64(1.333)
var?i?=?int(f)

現在常數:

如果 x 可以用 T 的值表示,則常量值 x 可以轉換為類型T。

然后,在文檔中,有一個示例表達式列表,其中之一是:

int(1.2)?//?illegal:?1.2?cannot?be?represented?as?an?int

論代表性

如果滿足以下條件之一,則常量 x 可由類型 T 的值表示:

  • x 位于由 T 確定的值集中。

  • T 是浮點類型,x 可以舍入到 T 的精度而不會溢出。舍入使用 IEEE 754 舍入到偶數規則,但 IEEE 負零進一步簡化為無符號零。請注意,常量值永遠不會導致 IEEE 負零、NaN 或無窮大。

  • T 是復數類型,x 的分量 real(x) 和 imag(x) 可通過 T 的分量類型(float32 或 float64)的值表示。

這 3 個條件都不適用于該表達式var a int = int(1.333),因此它是非法的。


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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