语法-Java四舍五入等详解

这篇具有很好参考价值的文章主要介绍了语法-Java四舍五入等详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java四舍五入等详解

一、Math.round()

  • long round(double d)
  • int round(float f)

​ Math.round()是Java中经典的舍入数字方法,它返回的是整数,也就是说对浮点数四舍五入成整数。

public class Main(){
    public static void main(){
        double d = 100.34;
        double e = 100.500;
        float f = 144;
        float g = 90f;
        
        System.out.println(Math.round(d));
        System.out.println(Math.round(e));
        System.out.println(Math.round(f));
        System.out.println(Math.round(g));
    }
}
结果:
100
101
144
90

二、BigDecimal

​ Java的最佳实践是优先使用BigDecimal而不是Math.round()来对Java的数字进行四舍五入。每当需要将数字四舍五入到小数点后n位时,首先考虑BigDecimal。

  • round.up

    • 远离零方向舍入,向绝对值最大的方向舍入,只要舍弃位非O即进位。
//round.up
BigDecimal bigDecimal3 = new BigDecimal("2.123").setScale(1, BigDecimal.ROUND_UP);
BigDecimal bigDecimal4 = new BigDecimal("2.163").setScale(1, BigDecimal.ROUND_UP);
System.out.println("2.123=>"+bigDecimal3+"\t2.163=>"+bigDecimal4);//2.123=>2.2,2.163=>2.2
  • round.down

    • 趋向零方向舍入,向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。
//round.down
BigDecimal bigDecimal5 = new BigDecimal("2.123").setScale(1, BigDecimal.ROUND_DOWN);
BigDecimal bigDecimal6 = new BigDecimal("2.163").setScale(1, BigDecimal.ROUND_DOWN);
System.out.println("2.123=>"+bigDecimal5+"\t2.163=>"+bigDecimal6);//2.123=>2.1,2.163=>2.1
  • round.ceiling

    • 向正无穷方向舍入,向正最大方向靠拢。
//round.ceiling
BigDecimal bigDecimal7 = new BigDecimal("2.12").setScale(1, BigDecimal.ROUND_CEILING);
BigDecimal bigDecimal8 = new BigDecimal("2.19").setScale(1, BigDecimal.ROUND_CEILING);
BigDecimal bigDecimal9 = new BigDecimal("-2.12").setScale(1, BigDecimal.ROUND_CEILING);
BigDecimal bigDecimal10 = new BigDecimal("-2.19").setScale(1, BigDecimal.ROUND_CEILING);
System.out.println("2.12=>"+bigDecimal7+"\t2.19=>"+bigDecimal8+"\t-2.12=>"+bigDecimal9+"\t-2.19=>"+bigDecimal10);
//2.12=>2.2	2.19=>2.2	-2.12=>-2.1	-2.19=>-2.1
  • round.floor

    • 向负无穷方向舍入,向负无穷方向靠拢。
//round.floor
BigDecimal bigDecimal11 = new BigDecimal("2.12").setScale(1, BigDecimal.ROUND_FLOOR);
BigDecimal bigDecimal12 = new BigDecimal("2.19").setScale(1, BigDecimal.ROUND_FLOOR);
BigDecimal bigDecimal13 = new BigDecimal("-2.12").setScale(1, BigDecimal.ROUND_FLOOR);
BigDecimal bigDecimal14 = new BigDecimal("-2.19").setScale(1, BigDecimal.ROUND_FLOOR);
System.out.println("2.12=>"+bigDecimal11+"\t2.19=>"+bigDecimal12+"\t-2.12=>"+bigDecimal13+"\t-2.19=>"+bigDecimal14);
//2.12=>2.1	2.19=>2.1	-2.12=>-2.2	-2.19=>-2.2
  • round.half_up(经典四舍五入)

//round.half_up(经典四舍五入)
BigDecimal bigDecimal15 = new BigDecimal("2.12").setScale(1, BigDecimal.ROUND_HALF_UP);
BigDecimal bigDecimal16 = new BigDecimal("2.19").setScale(1, BigDecimal.ROUND_HALF_UP);
BigDecimal bigDecimal17 = new BigDecimal("-2.12").setScale(1, BigDecimal.ROUND_HALF_UP);
BigDecimal bigDecimal18 = new BigDecimal("-2.19").setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println("2.12=>"+bigDecimal15+"\t2.19=>"+bigDecimal16+"\t-2.12=>"+bigDecimal17+"\t-2.19=>"+bigDecimal18);
//2.12=>2.1	2.19=>2.2	-2.12=>-2.1	-2.19=>-2.2
  • round.half_down(五舍六入)

//round.half_down(五舍六入)
BigDecimal bigDecimal19 = new BigDecimal("2.15").setScale(1, BigDecimal.ROUND_HALF_DOWN);
BigDecimal bigDecimal20 = new BigDecimal("2.16").setScale(1, BigDecimal.ROUND_HALF_DOWN);
BigDecimal bigDecimal21 = new BigDecimal("-2.15").setScale(1, BigDecimal.ROUND_HALF_DOWN);
BigDecimal bigDecimal22 = new BigDecimal("-2.16").setScale(1, BigDecimal.ROUND_HALF_DOWN);
System.out.println("2.15=>"+bigDecimal19+"\t2.16=>"+bigDecimal20+"\t-2.15=>"+bigDecimal21+"\t-2.16=>"+bigDecimal22);
//2.15=>2.1	2.16=>2.2	-2.15=>-2.1	-2.16=>-2.2
  • round.unnecessary

    • 计算结果是精确的,不需要舍入模式。
//round.unnecessary
BigDecimal bigDecimal23 = new BigDecimal("2.1544").setScale( BigDecimal.ROUND_UNNECESSARY);
BigDecimal bigDecimal24 = new BigDecimal("2.1544444").setScale( BigDecimal.ROUND_UNNECESSARY);//只能精确到7位
System.out.println("2.1544=>"+bigDecimal23+"\t2.15444444=>"+bigDecimal24);

参考材料

Java四舍五入的3种常见方法(取整及保留小数)

java四舍五入文章来源地址https://www.toymoban.com/news/detail-617722.html

到了这里,关于语法-Java四舍五入等详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python从入门到人工智能】16个必会的Python内置函数(4)——数据转换与计算 (详细语法参考+参数说明+具体示例) | 求和、四舍五入、幂运算的综合应用

      成长的标准就是,拒绝别人以后,没有任何的愧疚感。——萨特     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领域优质

    2024年02月15日
    浏览(53)
  • 四舍五入(c++基础)

    题目描述: 给定一个实数x,求保留y位小数的结果。(x=1000,y=5,y为整数) 输入格式: 一行,两个数,以一个空格分开。 输出格式: 一个实数。 样例输入: 样例输出: 提示:  方法一(推荐): 使用c语言中printf语句。 printf(\\\"%0.*lf\\\",y,x) 表示输出x时保留y位小数(*会用后面的y替代)

    2024年02月14日
    浏览(31)
  • PHP 四舍五入实现方法

    1. PHP 实现四舍五入的函数为 round() ,语法格式如下: 返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。 四舍五入数字到两位小数、设置负数: 除了使用 round() 方法外,我们还可以使用 sprintf() 方法来

    2024年02月12日
    浏览(44)
  • Python实现真正的四舍五入

    Python 内置的函数 round() 能够大致实现四舍五入的功能,但会存在部分场景不适用,比如: 网上搜了一圈,只找到了 Decimal 的替代解决方法,但看了貌似比较复杂,经过思考一番,只有遇到尾数为 5 的情况下,才会计算有偏差,那直接把 5 加 1 变成 6,不就可以轻松解决了

    2024年02月11日
    浏览(35)
  • C# 四舍五入 MidpointRounding.AwayFromZero

    四舍五入 在计算中 经常使用到,但是如果使用 Math.Round,只是五舍六入 在Math.Round内传入MidpointRounding.AwayFromZero枚举,就可以实现四舍五入的效果了, C#文档 https://docs.microsoft.com/zh-cn/dotnet/api/system.midpointrounding?view=net-6.0#system-midpointrounding-awayfromzero

    2024年02月13日
    浏览(39)
  • 【Python中四舍五入round()方法】

    选择题 以下python代码分别输出什么? x=2.34677432 print(round(x)) print(round(x,3)) A: 2   2.34 B: 3   3.467 C: 2   2.347 D: 7   7.040   欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交

    2023年04月08日
    浏览(21)
  • C#中四舍五入的正确写法是什么?

    概述:就在今天,测试提一个BUG,是什么呢?就是在计算商品采购价时,需要保留2位小数,当时是使用【Math.Round(采购价,2)】这种方法进行四舍五入的,但是这样写会有问题,至于什么问题呢,来看看这篇文章就对了! 四舍五入是一种精确度的计数保留法。在取小数近似数的

    2024年02月13日
    浏览(33)
  • 小程序保留2位小数据,不四舍五入

    目录  方法1: parseInt + toFixed 方法2:Math.floor + tofixed ### 方法3:parseFloat() ,较为准确==》    方法1: parseInt + toFixed 输出 : 58766.99999999999 587.66 -0.11 -1.00 -12.99 -12.99  有问题:  587.67 转换之后 587.66  方法2:Math.floor + tofixed 输出: -0.12 -1.00 -13.00 -13.00   有问题-12.99 得出

    2024年02月13日
    浏览(25)
  • Verilog FPGA实现除法——整除与四舍五入

    Verilog FPGA实现除法——整除与四舍五入 在FPGA开发中,实现除法计算是非常必要的。本文将介绍如何使用Verilog语言实现除法计算,包括整除和四舍五入两种情况。 整除实现 在Verilog中,整除的实现可以通过比较被除数是否大于等于除数来进行。具体步骤如下: 将除数与被除数

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包