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. bzoj 4465 游戏中的学问

    Written with StackEdit. Description 大家应该都见过很多人手拉手围着篝火跳舞的场景吧?一般情况下,大家手 拉手跳舞总是会围成一个大圈,每个人的左手拉着旁边朋友的右手, ...

  2. 洛谷P1306 斐波那契公约数

    题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输出格式 输入格式: 两个正整 ...

  3. 十大Java人物

    James Gosling : Java之父文/陶文 作 为Java之父,James Gosling的名字可谓是耳熟能详.当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上.Java做为中国的 ...

  4. php webservice服务端和客户端的实现

    1.创建类文件service.class.php,service类,添加若干方法. 2.用浏览器访问create_wsdl.php文件,生成service.wsdl文件. 3.修改wsdl文件,loc ...

  5. IaaS vs PaaS vs SaaS

    在云计算的早期阶段,企业面临的最大问题是他们是否应该使用公共云服务.如今,几乎所有的组织都在采用一些公共云服务.更重要的问题是企业应该使用哪种云服务:基础设施即服务(IaaS),平台即服务(PaaS) ...

  6. [转载]交换机STP协议

    注:之前做一个项目,测试部使用2个公司的交换机,H3C和H公司的,H公司的交换机是OEM H3C的交换机,正常来说两者使用没有区别. 但是使用中发现,如果设备的多个对外业务网口连接的交换机的聚合网口, ...

  7. (转)oracle嵌套表示例

    本文转载自:http://www.cnblogs.com/gisdream/archive/2012/04/13/2445291.html ----嵌套表:就是把一个表中的字段定义为一个表,这个字段表 ...

  8. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试

    准备工作 针对JMS类型的Sampler,需要额外的jar包(这里用的是apache ActiveMQ,将下载的AMQ apache-activemq-5.5.0根目录下的activemq-all-5 ...

  9. ARM-Linux移植之(四)——根文件系统构建

    相关工具版本: busybox-1.7.0 arm-linux-4.3.2 linux-2.6.22   1.配置busybox并安装. 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应 ...

  10. Visual C++中error spawning cl.exe解决方法

    点击“Tools”,选择“选项”,选择“选项”中的“目录” 目录的目录下有四个选项 需要对它们设置正确的路径 我是按照默认路径安装的 可执行文件: C:\Program Files\Microsoft ...