[英]Dividing Math with C#
這有一個可能很簡單的答案,但我無法弄清楚 -
double Result = 1 / 12;
返回0,而
double Result2 = 24 / 12;
返回2
發生了什么,我該如何解決?
嘗試這個:
double Result = 1 / (double)12;
或這個:
double Result = 1 / 12D;
在C#(以及許多其他語言)中,整數除法返回一個整數。 通過將其中一個操作數強制轉換為double
或顯式聲明文字double
,可以強制除法表達式返回一個double
精度數而不是在小數位后截斷。
它正在進行整數數學,因為右邊的數字被計算為整數。
試試1.0/12
;
我認為你需要投射你的價值觀
double Result = (double)1 / (double)12
與基於整數的數學有關,總是返回一個整數.....
這也會奏效
Decimal.Divide(1, 12)
它具有更高精度的結果,但范圍更小。
問題是1
和12
是整數( int
類型,而不是double
)。 這意味着值忽略小數點以外的任何值。 當你將1除以12時,得到0.083。 由於小數點后面的任何內容都被截斷為int
,因此保留為0
。
要獲得預期的結果,您的一個操作數必須是double
類型。 您可以通過將1
更改為1.0
或12更改為12.0
(或兩者,只要至少有一個操作數是double
精度數)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.