Java 保留两位小数 转String java如何保留两位小数点 |
您所在的位置:网站首页 › javafloat保留两位小数输出 › Java 保留两位小数 转String java如何保留两位小数点 |
萌新今晚用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到底有什么区别呢?看图自悟 最后(•̀ᴗ•́)و ̑̑ 我是萝莉安,一个想做程序媛的小姑娘 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄. ……如果发现写的有什么疏漏,请务必告诉我。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |