Ⅰ java中float类型保留2位小数,第3位值>0就向第二位进1 怎样实现
可以直接通过判断第三位的值,如果第三位乘以1000,之后对10求余,如果大于0,直接给第二位加上一个值“10”,在除以1000即可。
float f1 = 3.222f;
int num = (int) (f1 * 1000);
if (num % 10 > 0)
f1 = (num -num % 10 + 10 * 1.0f) / 1000.0f;
else
f 1= num * 1.0f / 1000.0f;
System.out.println(f);
输出结果:3.23.
Ⅱ java中如何实现将float精确到小数点后两位
方法1:用Math.round计算,这里返回的数字格式的.
float price=89.89;
int itemNum=3;
float totalPrice=price*itemNum;
float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000
方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算.
float price=1.2;
DecimalFormat decimalFormat=new DecimalFormat(".00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String p=decimalFomat.format(price);//format 返回的是字符串
Ⅲ JAVA如何把一个float四舍五入到小数点后2位,4位,或者其它指定位数
你好:
floata=123.2354f;
floatb=(float)(Math.round(a*100))/100;输出123.24
如果想要3位就是把2个100都换成1000
Ⅳ Java初学float小数的问题
在计算机几内部,小数不是按照四舍五入的方法的。因为计算机只有0和1,没有4和5,所以不能四舍五入的。
不管是float还是double,在处理末位时都是直接丢弃的。比如一个小数,应该是用33位二进制码才能完全表示的,但是float只有32位,于是最后一位就被扔了,表现出来的效果有时是减一,有时是不变。
Ⅳ java中float和double输出结果到底是多少位
输出1位
:因为
float
本来就是单精度的!
输出1位正常!不过通常带有
12.2f
1.float
它最多只能保存
7位有效数字!2.两个float相乘结果为float
3.乘数中只要有一个数为double,结果也有double
4.实数在计算机是以浮点数的形式表示的。所以要看它的实际二进制的编码方式