`

用整数类型处理货币

    博客分类:
  • Java
 
阅读更多

我们都知道如下代码会输出非预期结果

 

System.out.println(10.00-9.60);

我们理想的结果是输出0.4但是打印出的结果是0.40000000000000036.

这种非预期的结果是由于计算机在计算浮点数时不准确造成的。那如何解决?

 

1,使用BigDecimal

     BigDecimal是专门为弥补浮点数无法精确计算的缺陷而设计的类,并且它本身也提供了加减乘除的常用数学算法,特别是与数据库Decimal类型的字段映射时,BigDecimal是最优的解决方案。

 

2,使用整型

     把参与运算的值扩大100倍,并转换成整型,然后在展现时再缩小100倍,这样处理的好处是计算简单,准确,一般在非金融好样应用较多。此方法还会用于某些临售pos机。

分享到:
评论

相关推荐

    swift-Money-货币金额的精确类型安全的表示

    在Swift编程语言中,处理货币金额的精确性和类型安全性至关重要,因为这直接影响到财务计算的准确性。"Money"是一个开源库,它为开发者提供了一种高效且类型安全的方式来表示和操作货币值。在这个库中,货币金额被...

    Java POI 生成Excel时显示货币格式

    这些预定义的格式覆盖了通用文本、整数、浮点数、货币、百分比等多种类型。例如,编号为5的格式表示正数前加美元符号,并用逗号分隔千位;负数则用括号括起来。而编号为8的格式与之类似,但负数部分会以红色字体显示...

    SebastianMoney一个处理货币值的库

    这个库设计的目的是解决在编程中处理货币计算时的精度问题,特别是涉及金融交易和电子商务应用时,对精确性和一致性有严格要求的情况。 在PHP中,基本的数据类型如float或double在表示货币值时可能会导致精度丢失,...

    Money一个Fowler货币模式的PHP实现

    Fowler的货币模式是一种设计模式,用于处理货币计算时可能出现的精度问题和货币转换。在这个实现中,它可能是通过创建一个专门的Money类来封装货币值,并提供安全的货币操作方法。 **描述解析** "Money:一个...

    大整数减法 减法 运算

    传统的整数类型(如`int`, `long long`等)由于其固定长度的限制,在处理超出范围的大整数时会显得力不从心。因此,开发能够处理任意大小整数的算法就显得尤为重要。 #### 核心概念与背景知识 - **大整数**:指...

    各国货币编码

    1. `id`:每种货币的唯一标识符,可能是整数类型。 2. `code`:按照ISO 4217标准的三位字母代码。 3. `name`:货币的全名,如“United States Dollar”。 4. `symbol`:货币的符号,如“$”或“€”。 5. `country`...

    如何将数字型转换成货币型

    在编程领域中,数据类型的转换是十分常见的需求之一,尤其是在处理财务数据时,经常会遇到需要将简单的数字(如整数或浮点数)转换为货币格式的需求。本篇文章将详细介绍如何利用Java中的`java.text.DecimalFormat`...

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

    在 SQL Server 中,bigint 是一个整数类型,用于存储大整数。在 Java 中,bigint 对应的数据类型是 long。 binary 在 SQL Server 中,binary 是一个二进制类型,用于存储二进制数据。在 Java 中,binary 对应的...

    定义一个大整型类可以处理长度为数十位的整数,

    在计算机科学中,传统的数据类型如`int`和`long`在处理非常大的整数时可能会受到限制。例如,`int`通常能表示的最大值在32位系统中是2^31-1,而在64位系统中是2^63-1,这远不足以处理长度为数十位的整数。因此,为了...

    Laravel开发-currencies

    在Laravel中,可以通过Eloquent ORM定义模型字段类型,如使用`BigInteger`并配合序列化/反序列化策略来处理货币数据。 4. **货币服务**: 在Laravel中,可以创建一个货币服务,封装所有货币相关的操作,如获取实时...

    取整数的几种方法

    这对于处理货币或计数应用非常有用。 ```vb Dim num As Double = 3.14 Dim intNum = Int(num) ' 结果为 3 ``` 3. **CInt() 和 CLng() 函数** 这些函数分别用于将数值转换为整型(Integer)和长整型(Long)。...

    货币转汉字;日期、时间转汉字

    在Delphi中,处理货币转换通常涉及到字符串操作和数值计算。要将数字(例如:1234.56)转换为汉字表示(如:“一千二百三十四元五角六分”),我们需要实现以下步骤: - 分离整数部分和小数部分:可以使用`Int()`和...

    Laravel开发-laravel-money

    在本文中,我们将深入探讨Laravel开发中的"laravel-money"这一主题,它与处理货币计算和管理密切相关。Laravel是PHP的一个流行框架,以其优雅的语法和强大的功能深受开发者喜爱。"laravel-money"是Laravel生态系统中...

    VB货币金额大小写转换源代码

    通过理解以上知识点,你可以掌握在VB中实现货币金额大小写转换的基本方法,并能根据实际需求扩展功能,如增加其他货币类型的支持,或者提供更复杂的格式化选项。学习和实践这一过程,对于提升VB编程技能和理解财务...

    javascript把货币从小写转化为大写

    - 对整数部分进行处理,每次三位一组,用千位分隔符(如逗号)分隔,同时替换为中文大写数字。 - 对小数部分进行处理,根据需要保留的位数进行四舍五入,然后转换为中文大写数字。 3. **具体代码示例**: ```...

    常用数据类型[定义].pdf

    在处理货币或其他需要精确计算的数值时,应使用numeric或decimal类型。 了解和正确使用这些数据类型对于数据库设计和软件开发至关重要,它能够优化存储空间、提高查询效率并确保数据的准确性。在实际操作中,开发者...

    C#.NET中的基本类型C#.NET中的基本类型

    数值类型分为整数类型、浮点类型、无符号整数类型和定点类型。其中,整数类型包括: 1. `bool` - 表示布尔值,对应于`System.Boolean`类型,取值为`true`或`false`。 2. `char` - 表示单个Unicode字符,占2字节,...

    SQL2005 数据类型

    #### 整数类型 在SQL Server 2005中,整数类型主要包括以下几种: 1. **bit**: 这是一种特殊的整数类型,仅能存储0或1两个值。在.NET Framework中对应的类型是`Boolean`,而在Java中则对应的是`boolean`或`Boolean...

    Java 解惑

    - **使用整数类型进行计算**:一种解决方法是使用整数类型(如`int`或`long`)并以分为单位进行计算。这样可以避免二进制浮点数带来的精度问题。 - **示例代码**:如果使用整数类型进行货币计算,可以将货币值转换为...

Global site tag (gtag.js) - Google Analytics