簡體   English   中英

C#中的分工問題

[英]Problems with division in C#

如何檢查204/5是否大於200/5? 我嘗試使用浮點和十進制數學時遇到了困難。

使用float或decimal 起作用......但是你需要通過至少生成一個十進制/ float / double操作數來執行浮點運算

decimal x = ((decimal) 204) / 5;
decimal y = ((decimal) 200) / 5;

if (x > y) // Yes!

或者使用浮點文字:

decimal x = 204m / 5;
decimal y = 200m / 5;

哪個操作數是浮點並不重要:

decimal x = 204 / 5m;
decimal y = 200 / 5m;

漂浮/雙重工作:

double x = 204d / 5;
double y = 200d / 5;

那么,如果你只使用204/5會發生什么? 好吧,請考慮以下聲明:

double x = 204 / 5;

編譯器不使用變量的類型來計算右側的類型。 可以看出,右手邊只是一個整數,通過划分兩個整數得到。 然后將結果轉換為double並分配給x 問題是算術完全是用整數完成的而你希望先前執行轉換到浮點,這樣你就可以獲得浮點結果。

.0f附加到任何數字會強制語言將該數字解釋為浮點小數:

  • 204是整數,

  • 204f是單精度浮點小數和

  • 204.0是雙精度浮點小數。

因此, 204/5返回一個整數40204.0/5返回一個雙精度浮點40.8

if (204.0/5 > 200.0/5) {
    // stuff
}

或者,您可以采用數學上更簡單的路線:

if (204 > 200) {
    // because you're dividing both of them by 5
}
if ((204.0 / 5.0) > (200.0 / 5.0)) {
    //do stuff!
}

原因是,當你嘗試計算204/5 ,它正好計算int 204 divides int 5 ,結果也是C#中的int 你可以嘗試204m/5 ,你會得到正確的答案。

if (((float)(204) / 5) > ((float)(200) / 5))
{
//Enter code here
}
else
{
//Enter code here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM