首先看下 得到時(shí) 0 的代碼是怎樣寫的
int i_a = 10;
int i_b = 20;
NSLog(@"%f",i_a/i_b * 100.f);
long long a = 32768;
long long b = 153634;
NSLog(@"%f", a/b *100.f);
其實(shí)我們看下代碼 我們應(yīng)該感覺沒有錯(cuò)的啊~~~但是為什么還是0 呢
2016-12-16 21:17:25.515377 Test[650:158087] 0.000000
2016-12-16 21:17:25.515503 Test[650:158087] 0.000000
因?yàn)閮蓚€(gè)int 類型 相除 是向下取整的芯侥。
那么我們要改一改就好
int i_a = 10;
int i_b = 20;
NSLog(@"%f",i_a * 1.0 /i_b * 100.f);
long long a = 32768;
long long b = 153634;
NSLog(@"%f", a* 1.0 / b *100.f);
2016-12-16 21:22:33.568152 Test[654:158996] 50.000000
2016-12-16 21:22:33.568261 Test[654:158996] 21.328612
在兩個(gè)int 進(jìn)行相除之前, 在其中的一個(gè)int 進(jìn)行 乘以1.0 的操作 使它變成float 類型就好
okay 搞定收工~~~