发生精度丢失的原因: 个人理解:机器在运行时,使用2进制形式的计数方式,而我们日常生活中的计算是10进制的,对于整数的加减乘除,double还能适用,但是对于有小数的,则容易发生精度丢失,即用2进制表示10进制小数时,部分小数只是近似的表示,2进制表示不完全准确,此时,只能用BigDecimal来进 ...
分类:
其他好文 时间:
2016-09-10 13:18:34
阅读次数:
903
为什么要使用 bigdecimal? 借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精 ...
分类:
编程语言 时间:
2016-09-09 20:53:26
阅读次数:
219
一、简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效 位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和 double只能用来做科学计算或者是工程计算,在商业计算中要用j ...
分类:
其他好文 时间:
2016-09-08 14:38:10
阅读次数:
134
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。 float和double只能用来做科学计算或者是工程计算,在商业计算中金额我们要用 java.math.BigDe ...
分类:
编程语言 时间:
2016-09-08 13:00:28
阅读次数:
234
参加工作之后发现公司项目的数据库有关数值的字段类型,很少是之前常用的float和double, 而是一个没有接触过的decimal,在Java中表示的类型为BigDecimal, 而在业务中常常有关BigDecimal的加减乘除运算,所以查了一下资料,做了如下总结。 1.前言 Java在java.m ...
分类:
其他好文 时间:
2016-09-06 16:59:44
阅读次数:
323
package com.chauvet.utils; import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat; /*** * * 金额 * * 如果需要精确计算,必须用Strin ...
分类:
编程语言 时间:
2016-09-02 13:22:54
阅读次数:
341
1. 如果使用PowerDesigner此类工具,注意将工具的导出的SQL语句中对于表的双引号去掉。 2. 建表和建字段的时候,不同单词之间使用下划线分隔,比如 REC_ID 3. Oracle中数值类型字段,应该确定精度,利用MBG反向生成的时候,可以确定是Integer还是BigDecimal。 ...
分类:
数据库 时间:
2016-09-02 10:00:11
阅读次数:
221
一、场景:从数据表中读出Decimal类型的数据直接塞给Double类型的对象时,并不会有什么异常。 如果要再此基础上计算,就会发生异常。 比如:读出数据为0.0092,将其乘以100,则变成了0.919999999999999... 二、原因: java mysql 数据类型对照如下: 类型名称 ...
分类:
编程语言 时间:
2016-08-26 12:06:05
阅读次数:
388
public class MoneyFormatUtil { //分转换成元 public static String format_fen_as_yuan(int money_fen) { float money_yuan = new BigDecimal(money_fen / 100f).se ...
分类:
其他好文 时间:
2016-08-19 20:46:53
阅读次数:
185