当前位置: 首页 > 知识库问答 >
问题:

双重显示很长的数字

薛泰
2023-03-14

我有一个使用双打的简单计算,但我得到了一个意想不到的结果,我不明白为什么?

import java.util.Scanner;
public class VersatileSnitSoft {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        double amount;
        System.out.print("What’s the price of a CD-ROM? ");
        amount = myScanner.nextDouble();
        amount = amount + 25.00;
        System.out.print("We will bill $");
        System.out.print(amount); 
        System.out.println(" to your credit card.");

    }

}

如果我输入2.99,我得到的结果是。。

We will bill $27.990000000000002 to your credit card.

共有3个答案

颛孙喜
2023-03-14

使用十进制格式显示整数后的2位数字

  DecimalFormat f = new DecimalFormat("##.00");
   String amt=f.format(amount);
   System.out.print("We will bill $");
    System.out.print(amt); 

http://www.browxy.com/SubmittedCode/21519

澹台俊达
2023-03-14

double(通常是浮点值)不能总是准确地表示我们直观上认为的精确值。这是因为浮点数的存储方式不同,并且可能因机器和语言而异。当您尝试存储2.99时,存储的实际值可能略有不同(例如2.99000000000002)。这个问题给出了一个合理的、快速的原因概述。

因此,您应该(正如通过链接所说的)永远不要使用浮点原语来表示货币。使用BigDecimal,或者自己跟踪两个整数(例如int-dollars;int-cents;)。

容柏
2023-03-14

在使用双精度(或浮点)运算时,无法精确表示十进制值。改用BigDecimal。

编辑(2)

示例如下:

BigDecimal amount = new BigDecimal("2.99");
amount = amount.add(new BigDecimal("25.00"));
System.out.println(amount.toString());

输出:

27.99
 类似资料:
  • 问题内容: 我有一个使用双打的简单计算,但是得到了意外的结果,我不明白为什么? 如果输入2.99,我得到的结果是.. 问题答案: 在双精度(或浮点数)运算时,不能精确表示十进制值。改用BigDecimal。 编辑(2) 这里的例子: 输出:

  • 我有一个很长的表单A,内容固定,如下。 A在项目内非常多的地方使用,A1,A2,A3的内部数据独立不用同步。 但是每个使用A的地方都会因为父组件的某些事件而改动A的内部参数。 请问这种情况有无办法使formData双向绑定? 现在我的实现方法是 但是这样违背了单项数据流的原则。所以请问有更好的办法吗?

  • 当产品(和子产品)类别页面和商店页面中的条件标记(是产品类别)同时出现时,我无法应用下面的代码。 希望有人能帮忙。 我的目标:每个产品类别页面(包括家长) 参考代码片段和代码片段

  • 我刚启动JavaFx,有点拘泥于TableView,它显示了每个列的非常长的字符串表示,如: 而我预计细胞中只会出现“大”、“5000”、“3000”。 这是我的模型: fxml: 最后是控制器: 看起来控制器很好,它能够从数据库中获取值并向TableView添加行,但为什么TableView显示属性对象的字符串表示,而不仅仅是显示值? 非常感谢!

  • 问题内容: 我试图在python中打印一些大的东西,而不是得到整个结果,我得到了中间带有“ …”的部分。任何想法如何获得全部? 例如 代码是: 我已经将其转换为字符串,并且在写入文件时得到了相同的结果 问题答案: 对于,请致电: 将阈值提高到无穷大。有关更多详细信息,请参见文档。 对于Python 3,请改用:

  • 当执行下面的代码段时,它对double的行为不同。 为什么Double的行为与long不同?