当前位置: 首页 > 面试题库 >

双重显示非常长的数字

万俟穆冉
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.

问题答案:

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

编辑(2)

这里的例子:

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

输出:

27.99


 类似资料:
  • 我有一个使用双打的简单计算,但我得到了一个意想不到的结果,我不明白为什么? 如果我输入2.99,我得到的结果是。。

  • 从十一月初开始,本鼠陆陆续续面了滴滴、快手、百度三家公司,目前的进展是:滴滴排序挂,快手三面挂,百度oc。如果没有意外发生的话,大概率鼠鼠会去百度开启下一段旅行了。之前面试的时候经常到牛客上搜索面经,本着开源的精神,也将自己的面经简单的做一个分享,希望大家不要嫌弃 滴滴 一面() 一面面试官是个随和的姐姐,面试体验极佳,50min(没录音,下面的问题都是鼠鼠微薄的记忆) 你是怎么接触前端的 你学习

  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,

  • 我配置了一个Solr 4.4.0内核,其中包含约630k文档,原始大小约为10 GB。为了查询和高亮显示,每个字段都会复制到文本字段中。当我在没有突出显示的情况下执行搜索时,结果会在大约100毫秒后返回,但当打开突出显示时,相同的查询需要10-11秒。我还注意到,对相同术语的后续查询持续大约10-11秒。 我对该字段的初始配置如下 发送的查询类似于以下内容 我所有的研究似乎都没有提供线索来解释为什

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

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