整數除法出現意外的零結果
在最近的一個程式設計專案中,以下程式碼產生了意想不到的結果:
<code>PRINT @set1 PRINT @set2 SET @weight= @set1 / @set2; PRINT @weight</code>
除法結果為 0,而非預期的 0.073667712。
根本原因:整數資料型別
問題源自於@set1
和@set2
的資料型態。 兩者都是整數,只能儲存整數。 整數除法總是截斷小數部分,從而得到整數結果。 因此,47 除以 638 的結果是 0。
解
要得到正確的小數結果,有兩種方法:
將變數定義為浮點數: 將 @set1
和 @set2
宣告為浮點數(浮點數)。這允許變數保存小數值,確保精確的小數除法。
計算期間的型別轉換:如果更改變數資料型別不可行,請在除法期間使用 CAST
運算子將整數暫時轉換為浮點數:
<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>
這兩種方法都可以保證除法運算會傳回預期的十進制值,解決意外為零結果的問題。
以上是為什麼整數除法產生零而不是小數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!