import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat; public class TestDecimal {
public static void main(String[] args) {
/**
* java.math.BigDecimal 该类型的数据精确度极高,适合做财务软件。
*
* 构造方法:
* BigDecimal(int) 创建一个具有参数所指定整数值的对象。
* BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
* BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
* BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
*
* 方法:
* add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
* subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
* multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
* divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。
* toString() 将BigDecimal对象的数值转换成字符串。
* doubleValue() 将BigDecimal对象中的值以双精度数返回。
* floatValue() 将BigDecimal对象中的值以单精度数返回。
* longValue() 将BigDecimal对象中的值以长整数返回。
* intValue() 将BigDecimal对象中的值以整数返回。
*/ /**
* 加法运算: 使用add()方法,不能使用加号(+)运算
*/
BigDecimal v1 = new BigDecimal(10); //创建大数据对象
BigDecimal v2 = new BigDecimal(20);
//必须调用方法执行加法运算.
BigDecimal v3 = v1.add(v2);
System.out.println(v3); // /**
* 乘法运算: 使用multiply()方法
*
* NumberFormat:
* 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,
* 可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
*/
NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小数点最多3位 BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘 System.out.println("贷款金额:\t" + currency.format(loanAmount)); // ¥15,000.48
System.out.println("利率:\t" + percent.format(interestRate)); // 0.8%
System.out.println("利息:\t" + currency.format(interest)); // ¥120.00 /**
* BigDecimal是通过compareTo() 来进行比较
*/
BigDecimal a = new BigDecimal("1");
BigDecimal b = new BigDecimal("2");
BigDecimal c = new BigDecimal("1"); //左边比右边大:返回1 相等:返回0 小于:返回-1
System.out.println(a.compareTo(b)); // -1
System.out.println(a.compareTo(c)); //
System.out.println(b.compareTo(c)); // /**
* NumberFormat:声明一个NumberFormat对象 ,得到默认的数字格式化显示
*/
NumberFormat nf = NumberFormat.getInstance() ;
System.out.println("格式化之后的数字:" + nf.format(10000000)); //10,000,000
System.out.println("格式化之后的数字:" + nf.format(1000.345)); //1,000.345 /**
* DecimalFormat:
*/
class FormatDemo {
public void format1(String pattern,double value){ // 此方法专门用于完成数字的格式化显示
DecimalFormat df = null; // 声明一个DecimalFormat类的对象
df = new DecimalFormat(pattern); // 实例化对象,传入模板
String str = df.format(value); // 格式化数字
System.out.println(str);
}
}
FormatDemo demo = new FormatDemo(); //格式化对象的类
demo.format1("###,###.###",111222.34567); //111,222.346
demo.format1("000,000.000",11222.34567); //011,222.346
demo.format1("###,###.###¥",111222.34567); //111,222.346¥
demo.format1("000,000.000¥",11222.34567); //011,222.346¥
demo.format1("##.###%",0.345678); //34.568%
demo.format1("00.###%",0.0345678); //03.457%
demo.format1("###.###\u2030",0.345678); //345.678‰
}
}
 import java.text.DecimalFormat;

 public class TestDecimal2 {
public static void main(String[] args) {
/**
* java.text.DecimalFormat
* 关于数字格式化
*
* 数字格式元素:
* # 任意数字
* , 千分位
* . 小数点
* 0 不够补0
*/
//需求1:加入千分位.
DecimalFormat df = new DecimalFormat("###,###"); //创建数字格式化对象 //Number-->String
String dec = df.format(1234567); //格式化
System.out.println(dec); //"1,234,567" //需求2:加入千分位,保留2位小数
DecimalFormat df1 = new DecimalFormat("###,###.##");
String dec1 = df1.format(1234567.123); //格式化
System.out.println(dec1); //"1,234,567.12" //需求3:加入千分位,保留4位小数,并且不够补0
DecimalFormat df2 = new DecimalFormat("###,###.0000");
String dec2 = df2.format(1234567.123); //格式化
System.out.println(dec2);
}
}

Java-Decimal的更多相关文章

  1. FreeMarker-Built-ins for numbers

    http://freemarker.org/docs/ref_builtins_number.html#topic.extendedJavaDecimalFormat Page Contents ab ...

  2. CRM-stark组件

    stark组件 1. stark也是一个app(用startapp stark创建),目标时把这个做成一个可以拔插的组件 2. setting文件下INSTALLED_APPS 路径要配置好(app的 ...

  3. JDK1.8快速入门

    JDK8提供了非常多的便捷用法和语法糖,其编码效率几乎接近于C#开发,maven则是java目前为止最赞的jar包管理和build工具,这两部分内容都不算多,就合并到一起了. 愿编写java代码的过程 ...

  4. ORM之单表操作

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  5. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  6. BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法

    BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent ...

  7. 2016年11月3日JS脚本简介数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语

    数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6 ...

  8. java与C#用protobuf通信--java如何转换protobuf-net中的bcl.Decimal对象

    公司内部有些C#服务使用proto-net,引入了bcl.proto中的bcl.Decimal.bcl.DateTime等.对于java的proto生成代码需要对bcl.Decimal.bcl.Dat ...

  9. java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法

    今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repr ...

  10. mysql decimal(10,2)对应java类型

    下面我给出MYSQL类型与JAVA类型对应表,希望能够帮到您: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.S ...

随机推荐

  1. Arcgis Desktop连接GIS Servers报错“Proxy server got bad address from remote server ...”

    今天打开Arcgis Desktop时突然发现连接GIS Servers报错“Proxy server got bad address from remote server ...” 网上查找到解决方 ...

  2. LA3263 That Nice Euler Circuits

    题意 PDF 分析 欧拉定理:设平面内顶点数.边数.面数分别为\(V,E,F\),则\(V+F-E=2\). 枚举每对线段求交点,注意去重. 另外注意第n个端点和第一个端点重合. 时间复杂度\(o(T ...

  3. input子系统框架

    废话不多说,直接进入主题.在驱动insmod后,我们应用层对input设备如何操作?以下以全志a64为实例. 在/dev/input/eventX下(X的形成为后续会分析),是内核把接口暴露给应用层, ...

  4. OpenWRT mt7620n 系统升级引起的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/27237175 OpenWRT系统升级採用 ...

  5. 动态可缓存的内容管理系统(CMS)

    摘要:内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色,是内容有效组织和快速发布极为重要的基础平台.目前主流的内容发布系统都使用静态页面进行内容发布,在我们的实际使用过程中我们深切的感 ...

  6. .NET程序如何启动?

    .net程序如何启动? .NET Framework在Windows平台顶部运行,这意味着.NET Framework必须使用 windows可以理解的技术来构建.首先,所有托管模块和程序集文件都必须 ...

  7. 找到最大或最小的N个元素

    问题: 想在某个集合中找到最大或最小的N个元素 解决方案: heapq 模块中有两个函数  nlargest() 和 nsmallest()  它们正是我们需要的.例如: import heapq n ...

  8. int 和 Integer 有什么区别

    原文地址:https://blog.csdn.net/chenliguan/article/details/53888018 1 int与Integer的基本使用对比 (1)Integer是int的包 ...

  9. 关于android api 23 +的权限问题

    Beginning in Android 6.0 (API level 23), users grant permissions to apps while the app is running, n ...

  10. 微软系统工具包Sysinternals Suite官方下载地址

    Sysinternals Suite是微软官方发布的系统工具包,其中包含数十款实用的绿色系统工具软件,个个身怀绝技,是你维护Windows系统不可或缺的好帮手. 最新版Sysinternals Sui ...