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 ...
随机推荐
- hashlib摘要算法模块,logging日志,configparser配置文件模块
一.hashlib模块(摘要算法模块) 1.算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把 ...
- 简单实用的跨域表单POST提交
我们这里使用了iframe嵌套form表单POST提交,很简单,却能满足get|post等任何复杂情况的要求:缺点是没有返回值. 针对需要的地方加上一个iframe嵌套并塞入隐藏form表单,然后获取 ...
- HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cac ...
- GZip压缩与解压缩
GZIP的压缩与解压缩代码: public static class CompressionHelper { /// <summary> /// Compress the byte[] / ...
- bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角形 p^2 地预处理 p 以内的贝尔数.可以模(mod-1)(它是每个分解下 ...
- build RTK on ubuntu 16.04
RTK-1.4.0 InsightToolkit-4.12.2 ./cmake/nvcc-check.cmake line:86 commentout as #message(FATAL_ERROR ...
- 有限状态机(Finite-state machine, FSM)的C语言实现
有限状态机,也称为FSM(Finite State Machine),其在任意时刻都处于有限状态集合中的某一状态.当其获得一个输入字符时,将从当前状态转换到另一个状态,或者仍然保持在当前状态.任何一个 ...
- GitFlow在客户端Sourcetree的使用
安装 Sourcetree中直接集成了gitflow工具,可以在界面上找到 初始化 首次按下Git Flow按钮后,会弹出如图窗口 初始化会规定几个特殊的分支名称 生产环境分支:master 开发 ...
- Oracle中遇到的错误
1. ORA-00937: 不是单组分组函数 和 不是group by表达式 --select count(corp_tn),state_code from t_oa_main where cor ...
- 过河卒(Noip2002)(dp)
过河卒(Noip2002) 时间限制: 1 Sec 内存限制: 128 MB提交: 7 解决: 6[提交][状态][讨论版][命题人:quanxing] 题目描述 棋盘上A点有一个过河卒,需要走到 ...