Java 保留两位小数 转String java如何保留两位小数点

您所在的位置:网站首页 javafloat保留两位小数输出 Java 保留两位小数 转String java如何保留两位小数点

Java 保留两位小数 转String java如何保留两位小数点

2023-06-30 14:11| 来源: 网络整理| 查看: 265

萌新今晚用java刷题时候,发现让人保留两位小数的题,查百度之后发现有四种方法。然而我觉得我百度到的方法我都看不懂(´-ι_-`)。于是在我多方查证以及自我实验之后总结一下。

借助字符串输出

类似于C语言的输出,%.nf,n来控制小数点后四舍五入保留几位。

double p = 3.1415926; String a = String.format("%.9f",pi); String b = String.format("%.3f",pi); System.out.println("String.format处理的a = "+a); System.out.println("String.format处理的b = "+b); System.out.println("String.format处理之后pi = "+pi);

输出: String.format处理的a = 3.141592600 String.format处理的b = 3.142 String.format处理之后pi = 3.1415926``

BigDecimal 的RoundingMode 舍位模式//BigDecimal四舍五入法保留两位小数 import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { double number=3.1415926; BigDecimal n = new BigDecimal(String.valueOf(number)).setScale(2, RoundingMode.HALF_UP); //详见下面补充的的RoundingMode.XXX各种用法 System.out.println(n); } }

输出:3.14备注: new BigDecimal(number)值和number不一样,具体原因可以去查BigDecimal用法。new BigDecimal(String.valueOf(number))可以保证精度。

RoundingMode.XXX RoundingMode.CEILING:向右取整  //简单理解ceiling 美[ˈsilɪŋ] n.最高限度 3.1->3-5.4->-4RoundingMode.FLOOR:向左取整 1.9->1-5.3->-6RoundingMode.DOWN:向0取整  //即负数向右取整,正数向左取整 1.6->1-1.6->-1RoundingMode.UP:远离0取整  //即负数向左取整,正数向右取整RoundingMode.HALF_DOWN :五舍六入 -1.5->-11.5->11.6->1RoundingMode.HALF_UP :四舍五入RoundingMode.HALF_EVEN :四舍六入五取偶  //称为“银行家舍入法” 1.14->1.11.16->1.21.15->1.21.25->1.21.2354->1.24(保留2位小数)

银行家舍入法:当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的同时向前位进一,如果前位数值为偶,则直接舍去该位。   简单说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

DecimalFormat方法import java.text.DecimalFormat; public class Main { public static void main(String[] args) { DecimalFormat a = new DecimalFormat("0.0"); DecimalFormat b = new DecimalFormat("#.#"); DecimalFormat c = new DecimalFormat("000.000"); DecimalFormat d = new DecimalFormat("###.###"); DecimalFormat e1 = new DecimalFormat("000000.###"); DecimalFormat e2 = new DecimalFormat("000,000.###"); System.out.println(a.format(12.34)); //结果12.3 System.out.println(b.format(12.34)); //结果12.3 System.out.println(c.format(12.34)); //结果012.340 System.out.println(d.format(12.34)); //结果12.34 System.out.println(e1.format(12.34)); //结果000012.34 System.out.println(e2.format(12.34)); //结果000,012.34 } }

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。   以上举的举个例子可以发现一些规律,但是我总结的很啰嗦,(´・ω・`)可能你们看了更糊涂,所以你们自悟吧。

升华一下

ヽ(•̀ω•́ )ゝBigDecimal和DecimalFormat到底有什么区别呢?看图自悟

  

Java 保留两位小数 转String java如何保留两位小数点_java

最后(•̀ᴗ•́)و ̑̑ 我是萝莉安,一个想做程序媛的小姑娘 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄. ……如果发现写的有什么疏漏,请务必告诉我。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3