[英]objective c float values
為什么我們不能將兩個整數的除法結果存儲到float變量中?
int a = 100;
int b =50;
float temp = b/a;
它給出了t = 0!
我也做到了
int temp = b/a;
它給出了t = 0!
但是當我這樣做的時候
float temp = (float)b / (float)a;
它給出了正確的結果。 為什么這樣 ?
float temp = b/a;
的原因float temp = b/a;
給出0而float temp = (float)b/a;
給出0.5是編譯器根據操作數的類型而不是目標存儲類型確定除法運算的輸出類型。 簡單地說:
int / int = int
float / int = float
int / float = float
float / float = float
所以當你做float temp = b/a;
你在b
和a
整數除法中,然后將得到的整數(在你的例子中為0)存儲到float
類型的變量中。 本質上,當值轉換為浮點時,您已經丟失了所需的信息(假設您想要進行浮點除法),並且轉換不會將其恢復。
為了得到你想要的結果(再次,假設你想要進行浮點除法),你需要在除法之前將至少一個操作數強制轉換為float
。
int a = 100;
int b =50;
float temp = (float)b/a;
它的整數除法 - 50/100為0,余數(可以使用模數)為50。
您將需要使用浮點數,無論您是從int轉換還是從它們開始都取決於您。
下面的語句表示,您在啟動操作之前將整數值轉換為float
float temp = (float)b / (float)a;
所以可以看作如下
float temp = (float)50 / (float)100;
然后
float temp = 50.0 / 100.0 ;
結果
temp = 0.5;
在你的情況下,50/100是0.2。 通過獲得兩個整數的結果,結果也將是整數形式,因此它截斷小數部分,僅給出0。 但是在浮動的情況下,它被認為是一個浮動分區,所以你會得到0.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.