我有一些for循环需要一些浮点局部变量:
float price=0;
float weight=0;
int[] amountArray={2,5,3};
for(int i=0;i<=10;i++){
int amount=0;
if(i<amountArray.length){
amount=amountArray[i];
}
//other codes for price and weight
}
我希望将价格和权重嵌入for循环作为局部变量,因此我将i从int更改为float:
int[] amountArray={2,5,3};
for(float i=0,price=0,weight=0;i<=10;i++){
int amount=0;
if(i<amountArray.length){
amount=amountArray[(int)i];
}
//other codes for price and weight
}
修改后的版本是否与原始版本相同?因为我只包含整数值,可以正确地用IEEE 754标准表示,并且它不依赖于任何硬件(特别是在android中),所以我认为将float与&lt;,&lt; =,==进行比较并转换为int在这种情况下不是问题,我是否正确?
答案 0 :(得分:2)
这取决于整数的大小。 float
尾数有23位,并且总是假设尾数左边的位是1.这意味着任何正整数的值可以适合24位,可以准确表示。但是如果一个整数大于那个,就不会有足够的位数。
要进行演示,请尝试访问http://www.adambeneschan.com/How-Does-Floating-Point-Work/showfloat.php?floatvalue=30000001&floattype=float,这表示如果您尝试将数字30000001表示为float
,则实际上其值为30000000.显然==
isn&# 39;开始研究那么高的整数。