在c#中除法預設不保留小數點,
decimal result = 100 / 1000; // result = 0;
需要保留小數點,可以如下
decimal result = 100m / 1000;
m代表decimal.
如果是變數要如何處理呢?這是需要用到Math.Round()
int x= 120;
int y= 100000;
decimal result = (decimal)x / y; // (decimal)x/ y 表示把 x 轉換成decimal再做除法運算,int 除 int 是會丟失小數點的。
不過這樣的小數點後面的數太多了,需要處理下,這時候需要Math.Round()
decimal result = Math.Round((decimal)x/ y,2); 後面的2表示保留小數點後2位小數
--------------------------------------------------------------------------------------------------------
在C#與法中,“/”除後所得的值的類型,跟他的除數和被除數的類型有關。如:
int a=4;
int b=5;
float c=a/b ;
則結果為0(因為會先進行int的除法操作,得出結果0,再將結果轉為float 0;);
總之,得出的數都是整形的,最終發現原來除後所得的值的類型,跟他的除數和被除數的類型有關。所以,應寫成:
float a=3;
float b=5;
float c=a/b;
這樣,才能得出正確的結論!
在int裡,2/5的結果就是0
又因為運算式(float num = 2/5)左邊是float,而int可以隱式轉換成float,所以,C#把0變成了float的:0.0
如果你要得到正確的結果,必須至少讓等號右邊的一個數為float:加個小數點,或者加上F:
2.0/5
或
2.0/5.0
或
2f / 5
在c#中除法預設不保留小數點,
decimal result = 100 / 1000; // result = 0;
需要保留小數點,可以如下
decimal result = 100m / 1000;
m代表decimal.
如果是變數要如何處理呢?這是需要用到Math.Round()
int x= 120;
int y= 100000;
decimal result = (decimal)x / y; // (decimal)x/ y 表示把 x 轉換成decimal再做除法運算,int 除 int 是會丟失小數點的。
不過這樣的小數點後面的數太多了,需要處理下,這時候需要Math.Round()
decimal result = Math.Round((decimal)x/ y,2); 後面的2表示保留小數點後2位小數
--------------------------------------------------------------------------------------------------------
在C#與法中,“/”除後所得的值的類型,跟他的除數和被除數的類型有關。如:
int a=4;
int b=5;
float c=a/b ;
則結果為0(因為會先進行int的除法操作,得出結果0,再將結果轉為float 0;);
總之,得出的數都是整形的,最終發現原來除後所得的值的類型,跟他的除數和被除數的類型有關。所以,應寫成:
float a=3;
float b=5;
float c=a/b;
這樣,才能得出正確的結論!
在int裡,2/5的結果就是0
又因為運算式(float num = 2/5)左邊是float,而int可以隱式轉換成float,所以,C#把0變成了float的:0.0
如果你要得到正確的結果,必須至少讓等號右邊的一個數為float:加個小數點,或者加上F:
2.0/5
或
2.0/5.0
或
2f / 5