java开发框架 double_Java中Double类型计算问题

public class Test{

public static void main(String args[]){

System.out.println(0.05+0.01);

System.out.println(1.0-0.42);

System.out.println(4.015*100);

System.out.println(123.3/100);

}

};

你没有看错!结果确实是

0.060000000000000005

0.5800000000000001

401.49999999999994

1.2329999999999999

Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。

float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal,如果使用oracle数据库,数字字段通常使用number,不用限定小数位数,因为在某些商业计算中是无法确定小数位数的,java中一定要使用BigDecimal来进行计算,然后在转化成Double 存到数据库中。建表语句参考如下:

create tablePO.PO_LINES_ALL

(

PO_LINE_IDNUMBER not null,

LAST_UPDATE_DATE DATEnot null,

LAST_UPDATED_BYNUMBER not null,

PO_HEADER_IDNUMBER not null,

LINE_TYPE_IDNUMBER not null,

LINE_NUMNUMBER not null,

LAST_UPDATE_LOGINNUMBER,

CREATION_DATE DATE,

CREATED_BYNUMBER,

ITEM_IDNUMBER,

ITEM_REVISIONVARCHAR2(3),

CATEGORY_IDNUMBER,

ITEM_DESCRIPTIONVARCHAR2(240),

UNIT_MEAS_LOOKUP_CODEVARCHAR2(25),

QUANTITY_COMMITTEDNUMBER,

COMMITTED_AMOUNTNUMBER,

ALLOW_PRICE_OVERRIDE_FLAGVARCHAR2(1),

NOT_TO_EXCEED_PRICENUMBER,

LIST_PRICE_PER_UNITNUMBER,

UNIT_PRICENUMBER,

QUANTITYNUMBER,

AMOUNTNUMBER)

本文参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值