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

如何将小数点四舍五入到小数点后的2位(Java)

陶永望
2023-03-14

我对java相当陌生,我必须创建这个程序,我不知道从哪里开始。有人能帮我做什么,以及如何写代码开始吗?

编写一个模拟收银机的程序。提示用户输入三件商品的价格。将它们相加以获得小计。确定小计的税额(6%)。查找销售小计加税额的总额。显示每件商品的价格、小计金额、税额和最终金额。

到目前为止,我有这个:

package register;
import java.util.Scanner;

public class Register {

    public static void main(String[] args) {

        Scanner price = new Scanner(System.in);

        System.out.print("Please enter a price for item uno $");
        double priceuno = price.nextDouble();

        System.out.print("Please enter a price for item dos $" );
        double pricedos = price.nextDouble();

        System.out.print("Please enter a price for item tres $");
        double pricetres = price.nextDouble();

        double total = ((priceuno) + (pricedos) + (pricetres));
        System.out.println("The subtotal is $" + total);

        double tax = .06;

        double totalwotax = (total * tax );
        System.out.println("The tax for the subtotal is $" + totalwotax);
        double totalandtax = (total + totalwotax);
        System.out.println("The total for your bill with tax is $" + totalandtax);

    }
}

输出(如果价格为price1=1.65,price2=2.82和price3=9.08美元)如下所示:

请为第一件商品下注1.65美元

请输入第二项的价格2.82美元

请输入第三项的价格9.08美元

小计为13.55美元

小计税为81300000000000001美元

您的含税账单总额为143630000000001美元

我可以做些什么来使小计和总账单的税款四舍五入到小数点后的两位小数?

谢谢

共有3个答案

方德宇
2023-03-14

你可以试试这个

DecimalFormat df=新的DecimalFormat(“#.##”)

缴税

double totalwotax=0.81300000000000001
系统。出来println(“小计税为美元”df.format(totalwotax))

输出:0.81

总计

double汇总税=14.363000000000001;
System.out.println("您的账单含税总额为$"df.format(汇总税));

产出:14.36

康锦
2023-03-14

千万不要用双倍来赚钱,用户BigDecimal

楚硕
2023-03-14

Java有一个DecimalFormat类来处理类似的事情。

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

所以你想添加到你的代码中

 DecimalFormat df = new DecimalFormat("###,##0.00");

并将输出更改为

 double totalwotax = (total * tax );
 System.out.println("The tax for the subtotal is $" + df.format(totalwotax));
 double totalandtax = (total + totalwotax);
 System.out.println("The total for your bill with tax is $" + df.format(totalandtax));

这将确保你的美分小数点右边正好有两位数字,如果总数低于一美元,则在左边至少保留一位数字。如果是1000或以上,它将在正确的位置用逗号格式化。如果你的总数超过100万,你可能需要把它改成这样,以获得额外的逗号

DecimalFormat df = new DecimalFormat("###,###,##0.00");

编辑:因此Java还内置了对格式化货币的支持。忘记DecimalFormaster并使用以下内容:

NumberFormat nf = NumberFormat.getCurrencyInstance();

然后像使用DecimalFormatter一样使用它,但不使用前面的美元符号(它将由格式化程序添加)

System.out.println("The total for your bill with tax is " + nf.format(totalandtax));

此外,这种方法是地区敏感的,所以如果你在美国,它将使用美元,如果在日本,它使用日元,等等。

 类似资料:
  • 获取以下数字集--> 当相加时,这些给出一个整数。

  • 问题内容: 假设我有,我想将其转换为。如何在Python中完成此操作? 给与不。我是Python或一般编程的新手。 我不想将其打印为字符串,结果将被进一步使用。有关此问题的更多信息,请查看 Tim Wilson的Python编程技巧:贷款和付款计算器 。 问题答案: (或的结果)正确舍入为小数点后两位。数学上,这听起来像您想要的是天花板功能。Python模块中的一个名为: 地板和天花板功能通常分别

  • 我如何四舍五入到两个小数位?

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 我想把一个数字四舍五入到小数点后2位,但也保留后面的2个零,例如425.1382到425.1400,我在下面的例子中尝试过,但它似乎不起作用 或

  • 我已经阅读了很多stackoverflow问题,但似乎没有一个对我有效。我正在使用<code>数学。round()进行舍入。这是代码: 我得到的输出是:< code>123,但我希望它是< code>123.14。我知道添加< code>*100/100会有所帮助,但是正如你所看到的,我并没有设法让它工作。 输入和输出都是双份绝对是必不可少的。 如果您更改上述代码的第4行并发布它,那将是很大的帮助