knrt.net
当前位置:首页 >> int 相除等于FloAt >>

int 相除等于FloAt

一楼的方法是正确的,只要是分子分母的一项提升为float型,那么编译系统在运算前会二目提升到最高的float型的。 二楼的不正确,因为是把整形运算结果转变成float型,而此时两整形相除仍然得到的整形,再转换成float型会有精度损失的。

被这个类似的问题困扰过:同意楼上 iamdebugman的说法,强制转化被除数与除数,即 float t = (float) (k1) / (float)(k2); 另外一位同学的 int k1=5; int k2=2; float k; k=(float)k1/k2; 结果应该是2

两个int变量相除,结果一定是int类型的,这是由C语言所规定的。1/2 = 0,因为在C语言中/(除号)用于两个int类型时,结果只取整数部分,而不是根据四舍五入进行取舍。例如2/5的结果就是2,如果在赋值给一个float类型的数,那么就变为2.000000。

public static void main(String[] args) { int a=5; int b=3; System.out.println((double)a/b); } //强制类型转换,这样就可以输出你想输出的了

您好,1、整数的除法: 0做除数抛运行时异常;两整数商会做取整运算,Float或Double与一个整数做除法运算,则商位Float或者Double类型,例如: System.out.println("------------Int相关除法----------"); System.out.println("12/10="+12/10); ...

相除的结果系统认定是双精度的,而且是按照计算机的二进制。所以会出现你这样的结果。 如果你强制转换结果,那么当1.9/0.3的时候就出错了。所以最好的是保留一位小数来解决(与除数和被除数的格式保持一致): 保留一位 Math.round(c/d*10))/10;...

在JAVA中有三个特殊的浮点类型的数值:正无穷大、负无穷大、NaN 这三种数值用来表示出错或者溢出的情况。 举个例子,用一个正数去除0得到的是正无穷大,而计算负数的平方根会得到NaN

float a,b,c; int xiaoshu; c = a/b; // 得商 xiaoshu = (int) (c - (int) c) * 100; // 商去掉整数部分,余下的放大100倍再取整,得到小数点后的两位数值。 ------- 你若是输出精度到小数点下2 位,用格式 %.2f 就可以了。printf("%.2f\n",a/b);

可以用强制转化。 设float M; M=(float)j/(float)N; 这样得到的就是float类型了。

int tmp = dy / dx;改成 float tmp = (float)(dy/dx); int除以int小于1的话就被舍去了。。。

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com