`
xubindehao
  • 浏览: 243313 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

double误差 金额

 
阅读更多

    /**
     * 构造器。
     *
     * <p>
     * 创建一个具有参数<code>amount</code>指定金额和缺省币种的货币对象。
     * 如果金额不能转换为整数分,则使用四舍五入方式取整。
     *
     * <p>
     * 注意:由于double类型运算中存在误差,使用四舍五入方式取整的
     * 结果并不确定,因此,应尽量避免使用double类型创建货币类型。
     * 例:
     * <code>
     * assertEquals(999, Math.round(9.995 * 100));
     * assertEquals(1000, Math.round(999.5));
     * money = new Money((9.995));
     * assertEquals(999, money.getCent());
     * money = new Money(10.005);
     * assertEquals(1001, money.getCent());
     * </code>
     *
     * @param amount 金额,以元为单位。
     *
     */
    public Money(double amount) {
        this(amount, Currency.getInstance(DEFAULT_CURRENCY_CODE));
    }

分享到:
评论

相关推荐

    程序中两个Double类型相加出现误差的解决办法

    今天在自己做的系统中,发现了一个奇怪的现象:几个Double类型的数据相加,到最后得出的金额比正确数值总是少了几毛钱。以为是程序里的计算方法有问题,可是排查了很多地方,始终没有找到问题出在哪里。最后干脆把...

    红包的随机算法

    如果不符合,则需要重新分配(这通常在红包总数较大时才会发生,因为随机性导致的微小误差)。 在实际的`红包随机分配算法.java`文件中,我们可以看到具体的代码实现。通常会包含一个`RedPacket`类,其中有一个方法...

    Linux c比较金额相等函数.pdf

    在Linux C编程中,处理和比较金额涉及到对数值的精确操作和条件判断。在这个场景下,我们关注的是如何...此外,对于金额计算,还需要注意避免四舍五入误差,可能需要使用专门的库如`GMP`或`MPFR`来处理高精度数学运算。

    c代码-计算银行存款本息。输入存款金额money(单位:元),存期years,年利率rate,计算到期存款本息(保留2位小数)。计算公式如下: sum=money(1+rate)years 提示:求x的y次幂可以使用数学函数pow(x,y),其中x,y均为double型,在程序开始加上:#include&lt;math.h&gt; 输入:存款金额,存期,年利率。均为浮点数,且用逗号分隔 输出:存款本息(保留2位小数

    `pow(x, y)` 函数用于计算 `x` 的 `y` 次方,其中 `x` 和 `y` 都是双精度浮点数类型(double)。因此,在程序开头需要包含 `&lt;math.h&gt;` 头文件,以使用这个函数。 标签"代码"表明这是一个关于编程实践的问题,可能涉及...

    Linux c比较金额相等函数.docx

    总之,在Linux C编程中,比较金额相等需要考虑到数值的类型(整数或浮点数),精度问题以及可能的浮点误差。同时,字符串处理函数在处理金额字符串时也扮演着重要角色,如格式化、比较和查找等操作。

    c# 红包算法

    - **防止小数误差**:由于浮点数运算可能存在精度问题,可以使用`decimal`类型代替`double`,以减小计算误差。 - **限制最小红包金额**:可以设定一个最小红包金额限制,避免出现极小的红包。 - **均匀分布**:通过...

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

    2. **固定精度**:与Swift的Double或Float等浮点数不同,Money库使用整数类型来存储货币值,以保证计算结果的精确性。这对于金融计算是必要的,因为在财务领域,哪怕是微小的误差也可能导致巨大的损失。 3. **货币...

    【项目实践】商业计算怎样才能保证精度不丢失(csdn)————程序.pdf

    例如,`1.0 - 0.9`的结果理论上应为`0.1`,但在`double`中实际结果会呈现微小误差。 为了保证商业计算的精度,推荐使用以下两种数据类型: 1. **Decimal类型**:这是专门为商业计算设计的高精度数据类型。在数据库...

    面试题经典

    - **精度问题**:当涉及到金额计算时,通常会使用BigDecimal类型来避免浮点数运算带来的精度误差。 - **货币单位换算**:掌握不同货币单位之间的换算规则,比如1元=10角=100分。 ### 5. 问题五:ͺ(无法识别) 这...

    catastropic cancellation

    - 在财务计算中,例如计算 9% 的销售税在 50 美分电话费上的金额,可能会出现舍入误差导致的结果不准确。 - 即使是简单的加法运算也可能出现意外结果,例如 `0.1 + 0.2` 不等于 `0.3`。 - 在处理涉及货币计算的应用...

    JAVA浮点数计算精度损失底层原理与解决方案

    4. 避免直接比较浮点数:由于浮点数的精度问题,直接使用`==`比较浮点数可能会出现错误,应使用一定的误差范围进行比较,例如`Math.abs(a - b) ,其中`epsilon`是一个非常小的数,表示容许的误差。 总结来说,Java...

    Java解惑(中文)

    - **计算误差累积**:这种近似会导致计算结果出现微小的误差,尤其是在进行多次计算后,误差可能会累积。 - **输出格式问题**:即使使用`printf`控制输出格式,例如`System.out.printf("%.2f%n", 2.00 - 1.10);`,...

    MySQL的数据类型和建库策略.pdf

    3. 数字类:DECIMAL和NUMERIC实际上是同一种类型,用于存储高精度的数值,如价格和金额。它们是定长的,每个数字包括小数点都占据固定的存储空间。这使得DECIMAL在计算中能保持精确性,避免了浮点数可能出现的精度...

    mv_practica1:将美元转换为比索和比索转换为美元

    `double`在大多数情况下足够精确,但对于金融计算,`BigDecimal`提供了更精确的控制,因为它可以避免浮点计算中的舍入误差。 5. **汇率处理**: 汇率可以在类的初始化时设置,或者作为方法参数传入。如果使用API,...

    C# 截取小数,不四舍五入

    这种方法灵活且易于理解,满足了题目中“根据传入的变量设定需要保留金额的位数”的需求。 此外,对于金融计算,有时我们需要考虑到负数的情况。上述方法同样适用于负数,因为它处理的是绝对值,而正负号不受影响。...

    JAVA解惑.doc

    例如,可以使用`int`或`long`类型,将金额乘以100,这样就可以避免浮点数带来的误差。 **示例代码** ```java public class Change { public static void main(String[] args) { int payment = 200; // $2.00 int...

    JAVA语言解惑文档

    解决这个问题并不简单,因为直接使用`double`进行计算会引入这种误差。即使使用`printf`格式化输出,也只是解决了显示上的问题,而非根本的浮点精度问题。 要处理浮点数精度问题,我们可以选择使用`BigDecimal`类,...

    Java谜题.txt

    2. 浮点数(如 `double` 和 `float`)在进行数学计算时可能会有精度误差,特别是在涉及小数部分的比较和计算时。在需要精确计算或表示小数的情况下,应当谨慎使用浮点数,或者考虑使用 `BigDecimal` 类来确保精度。 ...

    java解惑文档

    例如,可以将金额转换成分为单位,执行计算后再转换回货币单位显示。 ```java public static void main(String[] args) { int amountInCents = 200 - 110; // 用分作为单位进行计算 double amountInDollars = ...

    崔希凡JavaWeb笔记day25-day27

    * @return 返回该商品的小计金额,处理了二进制运算误差问题 */ public double getSubtotal() { BigDecimal d1 = new BigDecimal(book.getPrice() + ""); BigDecimal d2 = new BigDecimal(count + ""); return...

Global site tag (gtag.js) - Google Analytics