关于网站开发的销售文章类网站后台
news/
2025/10/4 18:43:41/
文章来源:
关于网站开发的销售,文章类网站后台,高端手机网站案例,it项目管理软件排名机试问题—实现基于BigDecimal的特殊的四舍五入。
这是一道外企的机试题#xff0c;我把里面的某个难点部分#xff0c;摘出来详细如下#xff1a; //实现特殊的四舍五入#xff0c;先普通四舍五入取到小数点后两位#xff0c;然后最后一位向后进位#xff0c;0和5不变我把里面的某个难点部分摘出来详细如下 //实现特殊的四舍五入先普通四舍五入取到小数点后两位然后最后一位向后进位0和5不变1234变56789进1变0 也就是说最后一位要么是0要么是5 // 2.201–2.20 // 2.20–2.20 // 2.23–2.25 // 2.25–2.25 // 2.26–2.30 我的思路很简单是将BigDecimal转换成int然后利用取余取整完成特殊的四舍五入的这个规则然后再转成BigDecimal注意精度即可。
import java.math.BigDecimal;public class Main {public static void main(String[] args) {//1.输入startdouble start 2.445;BigDecimal input new BigDecimal(start).setScale(2, BigDecimal.ROUND_HALF_UP);//2.小数点后两位四舍五入然后乘以100取整数int res input.multiply(new BigDecimal(100)).intValue();System.out.println(input: input.toPlainString());System.out.println(res: res);int a res;int b a % 10;int c a / 10;System.out.println(-- a -- b -- c --);//3.取整数后根据题意将尾数变成自定义的样子if (b 0) {a c * 10;} else if(b 5) {a c * 10 5;} else {a c * 10 10;}System.out.println(a);//4.最后输出时再除以100为最终的结果值BigDecimal output new BigDecimal(a).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);System.out.println(output: output.toPlainString());}
}
总结
本文是自定义四舍五入也同样适用于其他规则只需要将自定义那块的逻辑换掉即可 本文核心是将BigDecimal转换成int同时稍微注意下精度问题。
这种方法只是临时想的不一定是最好的
如果发现有问题或者更好的实现欢迎继续探讨。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927433.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!