写点什么

开发实战:Float 如何保留 2 位小数

用户头像
worry
关注
发布于: 2021 年 01 月 19 日
开发实战:Float如何保留2位小数

在开发有翼小助手的微信商户号充值功能时,涉及到了手续费的计算。微信支付的费率为 0.6~1%,平台暂定费率为 0.8%。

例如:用户充值金额为 238 元,则需要交给平台的手续费为:

238*0.008=1.904

这里的 1.904 就需要保留 2 为小数,精确到分,最后取值为 1.90。


Float 如何保留 2 位小数,Java 中可以通过 BigDecimal 的 setScale 方法实现:

public float toRmb(float in) {   BigDecimal b = new BigDecimal(in);   float rmb = b.setScale(2, RoundingMode.HALF_UP).floatValue();   return rmb;}
复制代码


其中的 RoundingMode 可取值如下:

RoundingMode.UP:小数不为 0 时进位

RoundingMode.DOWN:舍去小数

RoundingMode.CEILING:正数相当于 RoundingMode.UP,负数相当于 RoundingMode.DOWN

RoundingMode.FLOOR:正数相当于 RoundingMode.DOWN,负数相当于 RoundingMode.UP

RoundingMode.HALF_UP:四舍五入

RoundingMode.HALF_DOWN:五舍六入

RoundingMode.HALF_EVEN:整数部分为奇数时相当于 RoundingMode.HALF_UP

整数部分为偶数时相当于 RoundingMode.HALF_DOWN

RoundingMode.UNNECESSARY:小数不为 0 时,抛出例外

发布于: 2021 年 01 月 19 日阅读数: 18
用户头像

worry

关注

心若有翼,我自飞翔 2018.01.25 加入

一个戴着眼睛的肥胖的扑腾蛾子

评论

发布
暂无评论
开发实战:Float如何保留2位小数