java format 保留2位小数_关于 Java 小数点位数保留的解决方案

点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

作者:RaphetS

www.jianshu.com/p/00fff555986b

第一种方法

使用DecimalFormat类

举个例子,假如我们需要保留两位小数,我们可以这样写

DecimalFormat df = new DecimalFormat("0.00");

测试如下:

double d = 0.200;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(d));

输出结果为:
0.20

若double d=0.000;输出结果为0.00;
若double d=0;输出结果为0.00;
若double d=41.2345;输出结果为41.23;

经测试,不管double d的值为多少,最后结果都是正常的两位小数。

同理若是保留一位小数DecimalFormat df = new DecimalFormat("0.0");其他以此类推

若是这种写法DecimalFormat df = new DecimalFormat("0.00"),不管传入的任何值,均保留两位小数

还有一种写法是这样:

double d = 41.123;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(d));

输出结果为:
41.12

若double d=2.00,输出结果为2;
若double d=41.001,输出结果为41;
若double d=41.010,输出结果为41.01;
若double d=0,输出结果为0;
若double d=0.200,输出结果为0.2;

总结:若是这种写法DecimalFormat df = new DecimalFormat("#.##"),则保留小数点后面不为0的两位小数,这种写法不能保证保留2为小数,但能保证最后一位数不为0;

第二种方法

测试:

double d = 0.6544;
String s=String.format("%.2f",d);
System.out.println(s);

输出结果为:
0.65

若double d=0.6566,输出结果为0.66;
若double d=0,输出结果为0.00;

其中String s=String.format("%.2f",d)表示小数点后任意两位小数,其中2为表示两位小数,若需要三位小数,把2改为3即可,其他同理。

总结:这种方法不管传入的值是多少,均保留两位小数,并且符合四舍五入的规则。

第三种方法:

使用BigDecimal类

测试:

double d = 1.000;
BigDecimal bd=new BigDecimal(d);
double d1=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);

输入结果:1.0

若double d=0,输出结果为0.0;
若double d=1.999,输出结果为2.0;
若double d=1.89,输出结果为1.89;

总结:使用这种写法若小数点后均为零,则保留一位小数,并且有四舍五入的规则。

源码

以下为Java测试类

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class Test {
    public static void main(String[] args) {
        double d = 1.19;
        System.out.println(formatDecimal4(d));
    }

    public static String formatDecimal1(double d) {
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(d);
    }

    public static String formatDecimal2(double d) {
        DecimalFormat df = new DecimalFormat("#.##");
        return df.format(d);
    }
    public static String formatDecimal3(double d){
        return String.format("%.2f",d);
    }

    public static double formatDecimal4(double d){
        BigDecimal bd=new BigDecimal(d);
        double d1=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
        return d1;
    }

}

END

Java面试题专栏

【20期】你知道为什么HashMap是线程不安全的吗?

【19期】为什么Java线程没有Running状态?

【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?

【17期】什么情况用ArrayList or LinkedList呢?

【16期】你能谈谈HashMap怎样解决hash冲突吗

【15期】谈谈这几个常见的多线程面试题

【14期】你能说说进程与线程的区别吗

【13期】谈谈 Redis 的过期策略

【12期】谈谈项目中单点登录的实现原理?

【11期】分布式系统接口,如何避免表单的重复提交?

857111d9ae546c1fd2b5253cfb4297bf.png

欢迎长按下图关注公众号后端技术精选

8ff9ba33a3514a756b85a1f9584f708f.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在 Java 中输出保留小数的结果,可以使用 DecimalFormat 类。具体步骤如下: 1. 首先,需要导入 java.text.DecimalFormat 类。 2. 创建一个 DecimalFormat 对象,并指定输出格式。例如,输出结果保留小数,可以使用以下代码: ``` DecimalFormat df = new DecimalFormat("#.00"); ``` 其中,# 表示可选的数字,. 表示小数点,0 表示必须的数字。 3. 使用 DecimalFormat 对象格式化数字,并输出结果。例如: ``` double num = 3.1415926; System.out.println(df.format(num)); ``` 这段代码将输出 3.14。 需要注意的是,如果要对浮点数进行四舍五入,可以使用 Math.round() 方法。例如: ``` double num = 3.1415926; double result = Math.round(num * 100) / 100.0; System.out.println(result); ``` 这段代码将输出 3.14。 ### 回答2: 在Java中,我们可以使用DecimalFormat类来输出保留小数。 首先,我们需要导入java.text.DecimalFormat类。然后,我们可以创建一个DecimalFormat对象,并通过指定格式来设置保留小数位数。格式通常通过使用#字符来代表可选的数字,使用0字符来代表必须存在的数字,使用.字符来代表小数点。 下面是一个例子: ```java import java.text.DecimalFormat; public class DecimalFormatExample { public static void main(String[] args) { double num = 123.456789; DecimalFormat df = new DecimalFormat("0.00"); String result = df.format(num); System.out.println(result); // 输出结果为123.46 } } ``` 在上面的例子中,我们将数字123.456789保留小数后,得到的结果是123.46。 如果希望输出结果中包含千分隔符,可以在格式中使用逗号,像这样: ```java import java.text.DecimalFormat; public class DecimalFormatExample { public static void main(String[] args) { double num = 1234567.89; DecimalFormat df = new DecimalFormat("#,##0.00"); String result = df.format(num); System.out.println(result); // 输出结果为1,234,567.89 } } ``` 在这个例子中,我们将数字1234567.89保留小数并添加千分隔符后,得到的结果是1,234,567.89。 通过使用DecimalFormat类,我们可以方便地进行数字格式化操作并输出保留指定小数位数的结果。 ### 回答3: 在Java中,可以使用String.format()方法或者DecimalFormat类来保留小数位数。 1. 使用String.format()方法: ``` double num = 3.1415926; String result = String.format("%.2f", num); System.out.println(result); ``` 这段代码会输出"3.14",其中"%.2f"是格式化字符串中的一个占符,表示保留小数。 2. 使用DecimalFormat类: ``` import java.text.DecimalFormat; double num = 3.1415926; DecimalFormat df = new DecimalFormat("0.00"); String result = df.format(num); System.out.println(result); ``` 这段代码也会输出"3.14"。在DecimalFormat类中,可以通过指定格式模式来控制保留小数位数。在这个例子中,"0.00"表示保留小数。 无论是使用String.format()方法还是DecimalFormat类,都可以通过改变占符或者格式模式来调整保留小数位数。例如,如果想保留小数,只需要将占符或格式模式中的".2"改为".3"即可。 需要注意的是,保留小数位数仅对输出的字符串有效,不会改变原始的数值。因此,在进行进一步计算时,仍然需要使用原始的数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值