zoukankan      html  css  js  c++  java
  • 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 table PO.PO_LINES_ALL
    (
      PO_LINE_ID                  NUMBER not null,
      LAST_UPDATE_DATE            DATE not null,
      LAST_UPDATED_BY             NUMBER not null,
      PO_HEADER_ID                NUMBER not null,
      LINE_TYPE_ID                NUMBER not null,
      LINE_NUM                    NUMBER not null,
      LAST_UPDATE_LOGIN           NUMBER,
      CREATION_DATE               DATE,
      CREATED_BY                  NUMBER,
      ITEM_ID                     NUMBER,
      ITEM_REVISION               VARCHAR2(3),
      CATEGORY_ID                 NUMBER,
      ITEM_DESCRIPTION            VARCHAR2(240),
      UNIT_MEAS_LOOKUP_CODE       VARCHAR2(25),
      QUANTITY_COMMITTED          NUMBER,
      COMMITTED_AMOUNT            NUMBER,
      ALLOW_PRICE_OVERRIDE_FLAG   VARCHAR2(1),
      NOT_TO_EXCEED_PRICE         NUMBER,
      LIST_PRICE_PER_UNIT         NUMBER,
      UNIT_PRICE                  NUMBER,
      QUANTITY                    NUMBER,
      AMOUNT                      NUMBER
    )

    本文参考:

    http://blog.csdn.net/pttaag/article/details/5912171

  • 相关阅读:
    fd_set 用法
    初步认识迭代服务器和并发服务器
    慢系统调用与信号中断
    nigix以及相关
    IO多路复用的几种实现机制的分析
    伪终端
    linux非阻塞的socket EAGAIN的错误处理
    从输入 URL 到页面加载完成的过程中都发生了什么事情?
    7.9 函数的定义
    7.8 文件操作
  • 原文地址:https://www.cnblogs.com/rigid/p/5981889.html
Copyright © 2011-2022 走看看