`

java 小数类型选择 :float,double 和Bigdecimal

阅读更多
引用

商业项目注意float和double的使用
http://wenku.baidu.com/view/bffac8e9f8c75fbfc77db2eb.html

在《Effective Java》中也提到这个原则:
float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用
java.math.BigDecimal。   

怎样在实际中应用呢,其实也不难。简单提几点: 
1.  数据库表的设计 
资金字段的数据类型一般定义为number类型,长度可根据需要而定。 

2. hibernate中po的属性的数据类型的定义 
       有两种选择,建议用double,float会有精度丢失的问题。hibernate映射工具自动生成的.hbm.xml中,默认也是double类型。 

3.程序中资金的运算 
       必须使用java.math.BigDecimal,而不能使用float或者double。建议写个工具类,提供些常用的方法供加减等运算使用。

分享到:
评论

相关推荐

    Java与MySQL中小数保存问题解析.pptx.pptx

    在Java和MySQL中,处理小数时需要注意一系列与精度、数据类型选择以及运算准确性相关的问题。首先,让我们深入了解Java中小数的保存方式。 Java提供了两种基本的小数数据类型:float和double。float占用4个字节,...

    Java保留两位小数方法大全

    **问题背景**:在Java中使用`double`或`float`类型进行计算时,可能会出现非预期的结果,这是由于浮点数的存储方式导致的精度损失问题。 **解决方案**: 1. **使用`BigDecimal`**:对于需要高精度计算的场景,推荐...

    Java 精确计算-double-float-String

    5. **转换类型**:如果需要将`BigDecimal`转换回`double`或`float`,可以使用`doubleValue()`和`floatValue()`方法,但要注意这可能会丢失精度。 在实际开发中,`BigDecimal`的使用可以确保计算结果的准确无误,但...

    java中BigDecimal的操作方法

    在进行商业计算时,由于浮点数(double和float)存在精度问题,不能保证准确的结果,因此通常推荐使用BigDecimal来确保计算的精确性。本文将深入探讨BigDecimal的基本操作、应用场景及注意事项。 首先,创建...

    Java Double相加出现的怪事

    Java 中的浮点数类型 float 和 double 在进行运算时会出现不精确的问题,这是因为计算机无法精确地表示十进制小数。这种问题不仅存在于 Java 中,在其它许多编程语言中也存在。 问题的提出: 编译运行下面的 Java ...

    float和double

    float和double浮点数类型的精度和范围解析 浮点数类型float和double是编程语言中最常用的数值类型,但是它们...因此,在商业计算中,我们应该使用java.math.BigDecimal来避免精度问题,而不是使用float和double类型。

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 ...在实际开发过程中,选择合适的数据类型对于提高程序性能和维护性至关重要。此外,了解这些类型的映射关系也有助于避免因类型转换问题导致的错误,确保应用程序能够高效稳定地运行。

    Java理论与实践:您的小数点到哪里去了?

    这篇文章主要探讨了Java中处理非整数类型,尤其是浮点数(float和double)和任意精度小数(BigDecimal)时遇到的陷阱和需要注意的问题。 首先,Java提供了两种基本的浮点类型:float和double,它们遵循IEEE 754标准...

    解决java数值范围以及float与double精度丢失的问题

    下面我们将详细探讨Java中的数值范围、float和double类型的精度问题,并且提供解决方案。 一、Java中的数值范围 Java中的基本数据类型有多种,包括整数类型(int、long)、浮点数类型(float、double)。每种类型...

    关于java中BigDecimal的简介(csdn)————程序.pdf

    由于基本数据类型`double`和`float`在进行大数值或高精度计算时可能会导致精度丢失,因此`BigDecimal`被设计出来解决这个问题。它提供了一种可控的精度计算方式,可以避免因为浮点数运算引发的不精确问题。 1. `...

    java实现小数、百分数值处理组件

    在Java中,小数通常由`float`和`double`类型来表示。`float`占据4字节,精度约为7位小数;`double`占据8字节,精度约为15-16位小数。处理小数时,我们可能会遇到舍入问题,这时可以使用`BigDecimal`类,它提供了更...

    Java数据类型和MySql数据类型对应一览

    在 Java 中,数字类型对应的是 java.lang.Integer、java.lang.Long、java.lang.Float、java.lang.Double 等类型。在 MySql 中,数字类型对应的是 INTEGER、BIGINT、FLOAT、DOUBLE 等类型。其中,INTEGER 类型用于...

    BigDecimal详解、代码示例和经常遇到的坑

    4. **构造器灵活性**:`BigDecimal`的构造器支持接收多种类型的参数,比如`double`和`String`,这使得用户可以根据不同的需求选择合适的构造方式。 #### 二、常见构造方法及使用 1. **使用字符串构造**:这是推荐...

    bigdecimal

    在Java中,`float` 和 `double` 类型是基于IEEE 754标准的浮点数类型。尽管它们可以存储非常大的范围内的值,但在某些情况下会丢失精度。例如,在处理货币时,即使是微小的误差也可能导致严重的后果。`BigDecimal` ...

    sqlserver数据库类型对应Java中的数据类型

    在 Java 中,float 对应的数据类型是 double。 int 在 SQL Server 中,int 是一个整数类型,用于存储整数值。在 Java 中,int 对应的数据类型是 int。 image 在 SQL Server 中,image 是一个二进制类型,用于...

    java保留两位小数问题

    在Java中,`double`和`float`类型虽然能够表示很大的范围,但它们都是以二进制形式存储的,在某些情况下不能精确表示十进制数,这会导致计算结果出现误差。例如: ```java System.out.println(0.05 + 0.01); // ...

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal`类提供了对任意精度的十进制数的支持,确保了商业计算中的准确性。 ### `...

    BigDecimal-CPP-master.zip

    在计算机科学中,浮点数(如`float`和`double`)的存储是基于IEEE 754标准的。这个标准定义了如何用二进制表示十进制小数,但这种表示方式会导致精度问题。例如,某些十进制小数无法精确地用有限的二进制位表示,...

    BigDecimal的计算

    它适用于金融计算、科学计算等场景,在这些场景中,使用浮点数(如 `float` 和 `double`)可能会因为精度丢失而导致错误的结果。本文将基于提供的代码片段来详细解释如何使用 `BigDecimal` 进行计算,并深入探讨其...

    浅谈Java中的高精度整数和高精度小数

    本文主要介绍了 Java 中的高精度整数和高精度小数,以及如何使用 BigInteger 和 BigDecimal 类来处理高精度整数和高精度小数。在实际应用中,这些知识点非常重要,可以帮助我们更好地处理大整数和小数,避免计算误差...

Global site tag (gtag.js) - Google Analytics