java中float类型保留2位小数,第3位值>0就向第二位进1 怎样实现?
答案:4 悬赏:0 手机版
解决时间 2021-11-28 06:30
- 提问者网友:低吟詩仙的傷
- 2021-11-27 18:07
java中float类型保留2位小数,第3位值>0就向第二位进1 怎样实现?
最佳答案
- 五星知识达人网友:白昼之月
- 2021-11-27 19:23
可以直接通过判断第三位的值,如果第三位乘以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.
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.
全部回答
- 1楼网友:摆渡翁
- 2021-11-27 21:33
你把float转为string 然后通过字符串截取到第三位小数,然后进行计算。
- 2楼网友:鸠书
- 2021-11-27 19:58
可以采用Math工具类中的round()方法来实现:
float f = (float)(Math.round(f*100))/100;
float f = (float)(Math.round(f*100))/100;
- 3楼网友:往事埋风中
- 2021-11-27 19:52
不知道java有没有提供方法,不过可以自己实现
float f = 2.12034f;int a = (int) (f * 1000);
if (a % 10 > 0)
f = (a - a % 10 + 10 * 1.0f) / 1000.0f;
else
f = a * 1.0f / 1000.0f;
System.out.println(f);
代码已经测试过,根据你自己的需求完善吧
思路是:
一、先把float乘以1000,将小数点后移动三位,然后强转为int,把不需要的(float小数点三位后的)数全部去掉
二、判断小数点第三位是否为0,也就是强转得到的int的最后一位是否为0,将int%10判断是否为0
三、如果小数点后第三位为0,就对int加上10,也就是向前进一位,然后int要将最后一位减去,int-int%10,这样,就得到了进位后的数,将这个数除以1000,就得到最终的需求
表达好像有点乱的样子,楼主慢慢看啦。。。求个采纳哦,进5044群5871
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯