java 保留小数点后N位数(若干位),几种实现的方式总结
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* java 保留小数点后N位数(若干位)位,几种实现的方式总结
* (1)常用的是1.DecimalFormat,和2.BigDecimal
* (2)4.String .format("%.2f",dbstr);
* @author zhangqf
*
*/
public class BigDecimalDemo01 {
public static void main(String[] args) {
/**1.DecimalFormat**/
DecimalFormat decimalFormat=new DecimalFormat();
decimalFormat.applyPattern("############.###############");
//decimalFormat.applyPattern("#.00");//decimalFormat.applyPattern("###,###,###,###.###");
// #.00 表示两位小数 #.0000四位小数 以此类推.
String df="0.000000520";
double d=Double.parseDouble(df);
String testdf=decimalFormat.format(d);
//切记:decimalFormat.format(d);格式里面放的是d是double类型的,不可把df字符串String放进去,
//写代码时不会报错,但运行的时候会报:不合法参数异常
System.out.println("testdf:="+testdf);
/**1.1.DecimalFormat变形使用,当输入数较大16位左右或小数位0超过5位以上例如:0.00000005,就会变成科学计数法的形式**/
String strdf1="12.0123";
String strdf2="0.000000005";
String strMul=mul(strdf1, strdf2);
System.out.println("strMul:="+strMul);
/*1.和1.1DecimalFormat运行结果
* 0.00000052----testdf
61.7283945617283945====strMul*/
/**2.BigDecimal,一般也用于java计算器加减乘除**/
double bdf=0.0078123456789;
BigDecimal bigDecimal=new BigDecimal(bdf);
double bdfScale=bigDecimal.setScale(10, BigDecimal.ROUND_HALF_UP).doubleValue();
/*double bdfScale=bigDecimal.setScale(10, BigDecimal.ROUND_HALF_UP).doubleValue();//四舍五入,保留2位小数
double bdf=0.000000078;--小数点后面的0不能多于5个,否则就是科学计数法-->运行结果:7.8E-8=====bdfScale
但是,0.0078123456789这种就不会变成科学计数法
*/
System.out.println("bdfScale:="+bdfScale);
/**3.NumberFormat,数字格式化---数字,货币,百分数,后续专门详细写这个模块,
* 创建格式化器(默认地区Local格式):
NumberFormat.getNumberInstance();
NumberFormat.getCurrencyInstance();
NumberFormat.getPercentInstance();
* **/
Double dbNumberF=new Double("123456789.1236");
System.out.println("dbNumberF:="+dbNumberF);
NumberFormat numberFormat=java.text.NumberFormat.getInstance();
numberFormat.setGroupingUsed(false);//只保留了3位,也会四舍五入
String dbNumFstr=numberFormat.format(dbNumberF);
System.out.println("dbNumberF:"+dbNumFstr);
/* Double dbNumberF=new Double("123456789.123456789");
dbNumberF:=1.2345678912345679E8
dbNumberF:123456789.123*/
/**运行结果:
* dbNumberF:=1.234567891236E8
dbNumberF:123456789.124**/
/*3.1变式2
用NumberFormat的setMaximumFractionDigits方法实现
NumberFormat format=NumberFormat.getNumberInstance() ;
format.setMaximumFractionDigits(int digits) //digits为 显示的数字位数
*/
double number = 23.5455;
NumberFormat format = NumberFormat.getNumberInstance() ;
format.setMaximumFractionDigits(2);
String result = format.format(number) ;
System.out.println("result:="+result);//23.55
/**4.String .format(),一般也用于java计算器加减乘除**/
double dbstr=3.14625789;
String resultStr = String .format("%.2f",dbstr);
/*这个小数格式化:位数不够用0来补,也可四舍五入
String resultStr = String .format("%.2f",dbstr);
3.1462578900*/
System.out.println("resultStr:="+resultStr);
/**5.利用算法实现**/
double numberArith=0.562;//可以是int,也可以是double
/*对于这种类型是有精度丢失,不成立的;double numberArith=0.000000006;输出结果:0.0*/
double resultArith = ((int) (numberArith * 100)) / 100.0;
System.out.println("resultArith:="+resultArith);
}
/**
* * 两个Double数相乘 *
*
* @param v1
* *
* @param v2
* *
* @return String
*/
public static String mul(String v1, String v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return numFormat(b1.multiply(b2).toString());
}
public static String numFormat(String resultFormat){//double d = 41.123;
String d = resultFormat;
if (d.contains(".")) {
String dot=d.substring(d.indexOf("."), d.length());
DecimalFormat df = new DecimalFormat("#.####################");
//不用指定整数位多少位,这样比较好,以免数很大造成科学计数法
double db=Double.valueOf(dot);
String str=df.format(db);
str=d.substring(0, d.indexOf("."))+str.substring(1, str.length());
//System.out.println(str);
return str;
}
return d;
}
}
运行输出结果:
testdf:=0.00000052
strMul:=6.0000000000615
bdfScale:=0.0078123457
dbNumberF:=1.234567891236E8
dbNumberF:123456789.124
result:=23.55
resultStr:=3.15
resultArith:=0.56
java 保留小数点后N位数(若干位),几种实现的方式总结的更多相关文章
- java 保留小数点后指定位数四种方法
1 package com.itheima_01; 2 3 import java.math.BigDecimal; 4 import java.text.DecimalFormat; 5 impor ...
- Js 和 PHP 中保留小数点后X位数的方法 toFixed、round、number_format、sprintf
在 Javacript 中保留小数点后两位数的方法为 toFixed(2),其中的2为保留两位,写多少就保留多少了,满5进1. Javacript例子: var num = 24.54789523; ...
- 在html的JavaScript部分计算,保留小数点后面的位数
例: f_pbf = ((f_boday_fat/f_weight)*100).toFixed(1); 注:例子中的.toFixed(1)是所用函数,确保在所得结果中保留小数点后面一位数,若 ...
- java保留小数点后位数以及输出反转数字
//方法一double b = 8.0/3.0; //与C语言不同,此处8.0和8有所区分 String format = String.format("%.2f,b"); //表 ...
- 实用---java保留小数点后位数以及输出反转数字
//方法一double b = 8.0/3.0; //与C语言不同,此处8.0和8有所区分 String format = String.format("%.2f,b"); //表 ...
- 微信小程序 之wxml保留小数点后两位数的方法及转化为字符串的方法
原理:wxml中不能直接使用较高级的js语法,如‘.toFixed’,‘toString()’,但可以通过引入wxs模块实现效果 1.新建`filter.wxs` var filters = { ...
- [Java]对double变量进行四舍五入,并保留小数点后位数
1.功能 将double类型变量进行四舍五入,并保留小数点后位数 2.代码 import java.math.BigDecimal; import java.math.RoundingMode; im ...
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- JAVA除法保留小数点后两位的两种方法 Java Math的 floor,round和ceil的总结
floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下 ...
随机推荐
- 【CF】509E Pretty Song
数学规律题,很容易计算的.以初始测试数据3为例.Str Y I S V O W E L--------------------------Len 1 2 3 4 | 5 6 7 8Y ...
- 串口传输文件 lrzsz
假设有一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果你想跟这块板子传输交互文件,要怎么办? 根据modem所采用的文件传输协议:xmodem,ymode ...
- 数据结构(平衡树,树分治,暴力重构):WC 2014 紫荆花之恋
[题目描述] 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来. 仔细看看的话,这棵大树实际上是一个带权 ...
- RAM和DDR
DDR内存现在渐渐成为内存市场中新的宠儿,因其合理的性价比从其诞生以来一直受到人们热烈的期望,希望这一新的内存产品全面提升系统的处理速度和带宽,就连对Rambus抱有无限希望的Intel公司也向外界宣 ...
- zoj 3757 Alice and Bob and Cue Sports 月赛A 模拟
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 题意:根据所给的台球规则,按照每次的结果计算最终两人的得分 ...
- Palindrome - URAL - 1297(求回文串)
题目大意:RT 分析:后缀数组求回文串,不得不说确实比较麻烦,尤其是再用线段数进行查询,需要注意的细节地方比较多,比赛实用性不高......不过练练手还是可以的. 线段数+后缀数组代码如下: ...
- Abator自动生成ibatis的相关配置和类
一.abator自动生成配置: abator自动生成ibatis的配置文件.mode.sqlMap.dao.bean实例 准备: 1.安装Eclipse插件: 要求eclipse3.1, ...
- PHP用ajia代码写三级联动下拉
下面是我做三级联动下拉的步骤以及逻辑 第一步:先做一个省市区表格 第二步:建个PHP页面显示用我是在<body>里放<div>用来接收要显示的省市区表格信息,里面嵌入jquer ...
- javaWeb上传文件代码
javaweb两种方式的上传,1普通上传,2:jquery ajax后台上传,部分截图如下: 完成包下载,下载后倒入myeclipse工程即可,下载地址:http://files.cnblogs.co ...
- 如何将位图格式图片文件(.bmp)生成geotiff格式图片?
一.位图格式信息 位图BITMAPINFOHEADER 与BITMAPFILEHEADER: 先来看BITMAPINFOHEADER,只写几个主要的 biSize包含的是这个结构体的大小(包括颜色表) ...