gpt4 book ai didi

java - 显示数字小数部分的问题

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:52 25 4
gpt4 key购买 nike

我正在努力创建一个计算器,但在显示数字后的小数部分时遇到了一些问题。我有计算器上的键是 1、2、3、4、5、6、7、8、9、0、00 和一个退格键

I have to enter value like this

按 1 会显示 0.01

然后 onPressing 2 o/p 0.12

然后按 3 o/p 1.23

像这样我们将添加在屏幕上显示数字。下面是我用来完成这个任务的代码

      @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.number1:
calcValue(.01);
break;
case R.id.number2:
calcValue(.02);
break;
case R.id.number3:
calcValue(.03);
break;
case R.id.number4:
calcValue(.04);
break;
case R.id.number5:
calcValue(.05);
break;
case R.id.number6:
calcValue(.06);
break;
case R.id.number7:
calcValue(.07);
break;
case R.id.number8:
calcValue(.08);
break;
case R.id.number9:
calcValue(.09);
break;
case R.id.number0:
enteredAmt = enteredAmt * 10.0 +(.0 * 100)/ 100.0;
roundEnteredPrice();
roundMyData(enteredAmt,2);

System.out.println("enteredAmt before:"+enteredAmt);
enteredAmt = (enteredAmt*100.0)/100.0;
System.out.println("enteredAmt after:"+enteredAmt);
valueEnteredTextview.setText(""+enteredAmt);
break;
case R.id.number00:
enteredAmt = enteredAmt * 100.0 + Math.floor(.0 * 100)/ 100.0;
roundEnteredPrice();
roundMyData(enteredAmt,2);
System.out.println("enteredAmt before:"+enteredAmt);
enteredAmt = (enteredAmt*100.0)/100.0;
System.out.println("enteredAmt after:"+enteredAmt);
valueEnteredTextview.setText(""+enteredAmt);
break;
case R.id.backspaceButton:
enteredAmt = 0.00;
valueEnteredTextview.setText("$" +0.00);
break;
}
private void calcValue(double d) {
enteredAmt = enteredAmt + Math.floor(d * 100)/ 100.0;
System.out.println("enteredAmt befor:"+enteredAmt);
enteredAmt = (Math.floor(enteredAmt*100.0)/100.0);
System.out.println("enteredAmt after:"+enteredAmt);
valueEnteredTextview.setText(""+enteredAmt);
}

private void roundEnteredPrice() {
BigDecimal bd = new BigDecimal(enteredAmt);
BigDecimal res = bd.setScale(2, RoundingMode.FLOOR);
System.out.println("Big Decimal" + res.toPlainString());
double entered = Double.parseDouble(res.toPlainString());
System.out.println("Entered Amount: "+entered);
}

private void roundMyData(double enteredAmt2, int numberOfDigitsAfterDecimal) {
double p = (float)Math.pow(10,numberOfDigitsAfterDecimal);
enteredAmt2 = enteredAmt2 * p;
double tmp = Math.floor(enteredAmt2)/p;
System.out.println("~~~~~~tmp~~~~~"+tmp);

现在我的问题是它没有显示最后输入的零就像我输入 1,2,0 一样,显示的预期值为 1.20显示的是 1.2如果我按下一个数字然后它显示零就像我按 4 然后输出是 12.04

我尝试过使用 Big Decimal,它也给了我们零,但有时证明了一些有线结果,比如如果我输入 1,0,2,0,预期值为 10.20,但它给出的值为 10.19。建议我做些什么以及我做错的地方。

最佳答案

使用String.Format

String value = String.format(Locale.ENGLISH, "%.2f", yourValue);

关于java - 显示数字小数部分的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com