Java 四舍五入至小数点后两位

Java 四舍五入至小数点后两位,java,Java,我想知道如何将变量四舍五入到小数点后两位。我已经知道了一种方法。比如说 float a = 12345.343f; System.out.printf("2f\n%" , a); 但是,我在打印语句后舍入时遇到了问题。例如,这就是我试图做的 float money; System.out.print("Enter how much money you have: "); money = keyboard.nextFloat(); 我想让输出显示的是打印对账单要求您输入您的钱,比如说12345

我想知道如何将变量四舍五入到小数点后两位。我已经知道了一种方法。比如说

float a = 12345.343f;
System.out.printf("2f\n%" , a);
但是,我在打印语句后舍入时遇到了问题。例如,这就是我试图做的

float money;
System.out.print("Enter how much money you have: ");
money = keyboard.nextFloat();
我想让输出显示的是打印对账单要求您输入您的钱,比如说12345.6789,然后循环到12345.68,最后的对账单是

Enter how much money you have: 12345.68
我遇到的问题是,如果不先初始化money,我就无法执行此操作,但是如果我这样做,print语句将打印我初始化的值,而不是用户输入的值。请记住,我是一个初学者程序员。如果可以的话,请用一个刚刚开始的人会理解的方式来解释

float roundedValue = Math.round(a * 100.0)/100.0;

四舍五入到小数点后2位。

这可能是OP想要的答案,但请注意,在大多数情况下,除法的数学结果不能准确表示为
浮点值。这可能没问题,也可能没问题。OP想询问,输入,然后更改输入中键入的内容,并替换屏幕上的内容。这只是四舍五入。如果精度是一个问题,您应该使用
double
(甚至是BigDecimal),而不是
float
float
精度高达7位数,这意味着它可能无法准确表示像
12345.68这样的数字。但是,
double
的精度高达16位。大多数十进制分数不能精确地表示为二进制分数,而二进制分数是Java的
float
double
数据类型的基础。因此,金融数据存储和计算通常依赖于定点表示,例如整数美分(或任何可能最小的货币面额)
BigDecimal
使用起来有点复杂,但它也可以很好地实现这一目的。如果没有不同的控制台,您无法像afaik那样在控制台上编辑已打印或键入的文本。