我想用小數/浮點數/雙精度除整數。我能夠將整個數字進行分割,只需使用:int Num1 = 300/2;
,但是當我嘗試使小數點「2」時不起作用。我看到有人提到這樣做int Num1 = 300/((float)1.25);
。這對我來說確實沒有任何意義...我也嘗試過int Num1 = Decimal.Divide(300, 1.25);
沒有任何運氣..將整數除以十進制數
0
A
回答
1
您正試圖將結果存儲在一個整數。相反,使用雙作爲變量的類型來存儲結果:
double Num1 = 300/2;
double Num1 = 300/1.25;
4
的問題是,你想要的結果保存到int
。試試這個:
float result = 300/(float)2;
float result = 300/(float)1.25;
或瞭解更多簡潔(的f
是一個信號,編譯器,這是一個float
常數):
float result = 300/2f;
float result = 300/1.25f;
注意float
是從decimal
很大的不同,這兩個有它們的優點。要使用十進制:
decimal result = decimal.Divide(300, 1.25);
或者這樣(的m
是一個信號,編譯器,這是一個decimal
常數):
decimal result = decimal.Divide(300m, 1.25m);
0
的int
只能存儲整數。當您將整數除以十進制數時,輸出將爲十進制(即使因存儲浮點數而使用4.00
)。
這不會編譯
int Num1 = 300/((float)1.25);
即使你投了明確的浮動(否則1.25將是一個double
),你想將其存儲在int
類型的變量。編譯器不會自動執行此操作,因爲implicit conversion doesn't exist會爲您投射float
作爲int
。因此,你需要要麼告訴你不介意失去精度和強制轉換爲一個int
int Num1 = (int)(300/((float)1.25));
編譯器或者你可以改變的Num1
類型爲浮點型。
float Num1 = 300/((float)1.25);
2
簡單地說:
- 如果你這樣做即數學的操作 - 對不同類型的兩個數字(如+, - ,*,/),編譯了「最小的」類型轉換爲「bigest」類型可以保存最多的信息。所以,如果你將300(一個int)除以1.25(一個雙精度),編譯器會將300轉換爲double,並將兩個double都分開。結果類型將是相同的類型,因此:雙精度型。
- 如果您希望將「較大」類型的結果放入「較小」類型(可容納較少信息的類型,如分數),則必須使用顯式強制轉換將此類型轉換爲較小類型。所以,如果你想把一個double放到一個int中,你必須將它轉換爲int,這樣可能會導致信息的丟失。
- C#知道你可以在常數使用,明確指出數是什麼類型的許多後綴:
- 10U ==> UINT
- 10L ==>長
- 10F ==>浮動
- 10D ==> double
- 10M ==>十進制。
相關問題
- 1. VB.NET嘗試除以0整數除以十進制錯誤
- 2. 在Arduino上將整數/十進制轉換爲十六進制?
- 3. 乘以十進制和整數F#
- 4. 將十進制添加到整數
- 5. 十六進制整數
- 6. PHP ROUND十進制整數
- 7. 十進制/整數乘法
- 8. 將整數轉換爲二進制/十進制的MIPS函數?
- 9. Ncalc除以十進制小數點
- 10. as3 - 按十進制整數十進制數的按鈕
- 11. Codekata將數字從十六進制轉換爲十進制整數表示
- 12. 十進制數可以用十進制數加/減嗎?
- 13. 如何將二進制轉換爲十進制與長整數?
- 14. 將二進制轉換爲十進制整數輸出
- 15. 將非十進制數轉換爲十進制數
- 16. 將十進制數截斷爲一個十進制數
- 17. 如何從十六進制NSString得到十進制整數int
- 18. 十六進制字符串到十六進制整數
- 19. 將八進制數轉換爲十進制和十六進制
- 20. 沒有數據類型可以保存完整數字時將十進制轉換爲十六進制
- 21. 使用十進制數據類型的VBA整數除法
- 22. 如何將十進制整數轉換爲單個十六進制字符? (C)
- 23. 使用Python將十六進制字符串轉換爲十進制整數
- 24. 以十進制數形式打印整數向量
- 25. 以十六進制打印數組與整數
- 26. 以整數十進制表示法分隔數字
- 27. C++中整數的十進制,八進制和十六進制表示法
- 28. 在delphi 7中將整數轉換爲十六進制數
- 29. Java,如何將十進制數字轉換爲整數
- 30. 將NSArray組件轉換爲整數或十進制數
'300/2'是一個整數除法,這是OP試圖避免的。 '300/2.0'比較好。 – jaket 2013-04-23 22:51:58