Java-Decimal
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的更多相关文章
- FreeMarker-Built-ins for numbers
http://freemarker.org/docs/ref_builtins_number.html#topic.extendedJavaDecimalFormat Page Contents ab ...
- CRM-stark组件
stark组件 1. stark也是一个app(用startapp stark创建),目标时把这个做成一个可以拔插的组件 2. setting文件下INSTALLED_APPS 路径要配置好(app的 ...
- JDK1.8快速入门
JDK8提供了非常多的便捷用法和语法糖,其编码效率几乎接近于C#开发,maven则是java目前为止最赞的jar包管理和build工具,这两部分内容都不算多,就合并到一起了. 愿编写java代码的过程 ...
- ORM之单表操作
ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法
BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent ...
- 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 ...
- java与C#用protobuf通信--java如何转换protobuf-net中的bcl.Decimal对象
公司内部有些C#服务使用proto-net,引入了bcl.proto中的bcl.Decimal.bcl.DateTime等.对于java的proto生成代码需要对bcl.Decimal.bcl.Dat ...
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repr ...
- mysql decimal(10,2)对应java类型
下面我给出MYSQL类型与JAVA类型对应表,希望能够帮到您: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.S ...
随机推荐
- 深入理解java虚拟机-第六章
第6章 类文件 6.3 Class类文件的结构 Class文件是一组以8位字节为基础单位的二进制流. Class文件格式采用一种类似C语言结构伪结构存储数据,这种伪结构中只有两种数据类型:无符号数和表 ...
- CentOS 6.5添加网易163源
换国内的yum源. 准备工作,首先备份/etc/yum.repos.d/CentOS-Base.repo cd /etc/yum.repos.d/ wget http://m ...
- 公历和农历转换的JS代码
<!-- function CalConv(M) { FIRSTYEAR = 1936; LASTYEAR = 2031; LunarCal = [ new tagLunarCal(23, 3, ...
- LeetCode Max Stack
原题链接在这里:https://leetcode.com/problems/max-stack/description/ 题目: Design a max stack that supports pu ...
- AtCoder Grand Contest 017 题解
A - Biscuits 题目: 给出 \(n\) 个物品,每个物品有一个权值. 问有多少种选取方式使得物品权值之和 \(\bmod\space 2\) 为 \(p\). \(n \leq 50\) ...
- UVA12296 Pieces and Discs
题意 PDF 分析 可以看成直线切割多边形,直接维护. 对每个多边形考虑每条边和每个点即可. 时间复杂度?不过\(n,m \leq 20\)这种数据怎么都过了.据说是\(O(n^3)\)的,而且常数也 ...
- [转]linux下查看进程内存使用情况
动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...
- C#合成解析XML与JSON
http://www.xuanyusong.com/archives/1901 XML与JSON在开发中非常重要, 其实核心就是处理字符串.一个是XML的字符串一个是JSON的字符串,尤其是在处 ...
- 设置ubantu的软件源地址
查看所用的源 $ sudo vim /etc/apt/sources.list 由于安装的Ubuntu Server 16.04.1 LTS是英文版的,软件源就默认都是 us.archive.ubun ...
- Dedesql数据库类详解(二次开发必备教程)(转)
http://www.dedecms.com/help/development/2009/1028/1076.html 织梦DedeCMS的二次开发不仅仅是会写写织梦的标签,会制作织梦的模板.很多时候 ...