java 四舍五入保留小数点后两位

java 四舍五入保留小数点后两位方式一:doublef=3.1516;BigDecimalb=newBigDecimal(f);doublef1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();输出结果f1为3.15;源码解读:  publicBigDecimalsetScale(intnewScale,introundingMode)//intnewScale为小数点后保留的位数,introundingMode为变量进

大家好,又见面了,我是你们的朋友全栈君。

方式一:

double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 
输出结果f1为 3.15

源码解读:
  public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为小数点后保留的位数, int roundingMode 为变量进行取舍的方式;
  BigDecimal.ROUND_HALF_UP 属性含义为为四舍五入

方式二:

String format = new DecimalFormat("#.0000").format(3.1415926);
System.out.println(format);
输出结果为 3.1416

解读:
  #.00 表示两位小数 #.0000四位小数 以此类推…

方式三:

double num = 3.1415926;
String result = String.format("%.4f", num);
System.out.println(result);
输出结果为:3.1416

解读:
  %.2f 中 %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。
  
方式四:

double num = Math.round(5.2544555 * 100) * 0.01d;
System.out.println(num);
输出结果为:5.25

解读:
  最后乘积的0.01d表示小数点后保留的位数(四舍五入),0.0001 为小数点后保留4位,以此类推…
  
方式五:

  1. 功能
    将程序中的double值精确到小数点后两位。可以四舍五入,也可以直接截断。
    比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至于是否需要四舍五入,可以通过参数来决定(RoundingMode.UP/RoundingMode.DOWN等参数)。

  2. 实现代码

package com.clzhang.sample;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class DoubleTest { 
   
    /** 保留两位小数,四舍五入的一个老土的方法 */
    public static double formatDouble1(double d) { 
   
        return (double)Math.round(d*100)/100;
    }
    public static double formatDouble2(double d) { 
   
        // 旧方法,已经不再推荐使用
    // BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);
        // 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
        BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
        return bg.doubleValue();
    }
    public static String formatDouble3(double d) { 
   
        NumberFormat nf = NumberFormat.getNumberInstance();

        // 保留两位小数
        nf.setMaximumFractionDigits(2); 
        // 如果不需要四舍五入,可以使用RoundingMode.DOWN
        nf.setRoundingMode(RoundingMode.UP);
        return nf.format(d);
    }
    /**这个方法挺简单的 */
    public static String formatDouble4(double d) { 
   
        DecimalFormat df = new DecimalFormat("#.00");
        return df.format(d);
    }
    /**如果只是用于程序中的格式化数值然后输出,那么这个方法还是挺方便的, 应该是这样使用:System.out.println(String.format("%.2f", d));*/
    public static String formatDouble5(double d) { 
   
        return String.format("%.2f", d);
    }
    public static void main(String[] args) { 
   
        double d = 12345.67890;
        System.out.println(formatDouble1(d));
        System.out.println(formatDouble2(d));
        System.out.println(formatDouble3(d));
        System.out.println(formatDouble4(d));
        System.out.println(formatDouble5(d));
    }
}
  1. 输出
    12345.68
    12345.68
    12,345.68
    12345.68
    12345.68
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143652.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Max Script|修改器篇

    Max Script|修改器篇创建一个立方体盒子 并选中并修改其高度宽度长度 box 创建立方体盒子 select box 选中以 box 命名开口的 objecta 将选中的物体赋予给集合 a 以后可以直接操作集合 aa height 60 a width 20 a length 20 高度 60 长宽各 20a heightsegs 10

    2025年9月28日
    0
  • L3-001 凑零钱(回溯和0-1背包)[通俗易懂]

    L3-001 凑零钱(回溯和0-1背包)[通俗易懂]韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10​4​​ 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。输入格式:输入第一行给出两个正整数:N(≤10​4​​ )是硬币的总个数,M(≤10​2​​ )是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数面值。数字间以空格分隔。输出格式:在一行中输出硬币的面值 V​1​​ ≤V​2​​ ≤⋯≤V​k

    2022年8月8日
    5
  • pycharm使用技巧及常用快捷键_程序运行快捷键

    pycharm使用技巧及常用快捷键_程序运行快捷键代码运行快捷键序号快捷键作用1ALT+SHIFT+F10选择程序文件并运行代码2ALT+SHIFT+F9选择程序文件并调试代码3SHIFT+F10运行代码4SHIFT+F9调试代码5CTRL+SHIFT+F10运行当前编辑区的程序

    2022年8月26日
    6
  • C语言:大数取余_c语言15和50取余等于多少

    C语言:大数取余_c语言15和50取余等于多少大数取余数(数组)今天做学校的oj时遇到一题,问题可见一下截图:查遍各大论坛,都没有遇到合适的方法,普通方法不可用,要采用数组的形式。被除数超过longlong类型,不能采用常规思路,否则会出

    2022年8月2日
    5
  • 数列极限定义的具体解释(举例)–十分易懂

    数列极限定义的具体解释(举例)–十分易懂数列极限定义的具体解释(举例)–十分易懂自己看书没彻底明白,百度了几个还不错的解释。直接上图吧!这里重点看举例这个解释很好理解了。2.下面的另一种解释指出了N是项数并配图例。如果朋友们还有更好的理解方法,欢迎留言哦!谢谢…

    2022年5月2日
    38
  • soapui的教程

    soapui的教程一.这里我安装的是5.2.1这个版本,安装之后按照我的操作步骤即可二.这里放入后台给你的接口,结尾应该是?wsdl如果没有你需要手动加上,否则会报错三:这个是成功界面四:如图,点开之后是这样的,在1的地方你需要输入对应的参数点击4进行查询,查询成功右侧会有对应的xml数据结果,具体参数需要输入什么,应用场景不同可以去问下后台这篇博客基本结合我的另一篇的ksoap2框架的博客一起使用…

    2022年6月25日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号