我总是被告知永远不要代表钱double或float类型,这次我向你提出问题:为什么?
我确信有一个很好的理由,我根本不知道它是什么.
我已经阅读了很多stackoverflow问题,但似乎没有一个对我有用.我正在math.round()用来完善.这是代码:
class round{
public static void main(String args[]){
double a = 123.13698;
double roundOff = Math.round(a*100)/100;
System.out.println(roundOff);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:123但我希望它是123.14.我读到添加*100/100会有所帮助但是你可以看到我没有设法让它工作.
输入和输出都是双倍的绝对必要.
如果您更改上面代码的第4行并发布它将会非常有用.
我正在使用eclipse + Android SDK.
我需要将浮点值舍入为2位小数.我通常使用数学库使用下一个"技巧".
float accelerometerX = accelerometerX * 100;
accelerometerX = round(accelerometerX);
Log.d("Test","" + accelerometerX/100);
Run Code Online (Sandbox Code Playgroud)
但我觉得这不是最好的方法.
是否有图书馆可以进行这些类型的操作?
提前致谢.
也许这是一个愚蠢的问题,但如果没有创建方法,我无法猜测如何解决它.也许有一种"自然的方式"来做,例如在C中.这是问题所在:
我有一个var:
double a;
Run Code Online (Sandbox Code Playgroud)
而我想只显示2或3位小数.当我试图表明它时:
Text.setText("Value of a: " + String.valueOf(a));
Run Code Online (Sandbox Code Playgroud)
它给出了类似的东西:
价值a:5.234966145
我想要的只是
价值a:5.23
在不改变a的实际值的情况下,它显示了近似数字,但与实数一致.
我最近正在处理数字,我有一种情况,我希望将双精度值的精度设置为6位数或4位数,具体取决于数据库中存储的值.
例如,如果在数据库中精度设置为4位,则输出必须为,
10.0000.
我试过DecimalFormat并使用字符串##.####,但每次使用符号都很烦人.
有没有更好的方法,如下所示:
Double value = 10.0;
value.setPrecision(4);
Run Code Online (Sandbox Code Playgroud) 如何得到小数点后只有两位数的双精度值.
例如
如果
i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
Run Code Online (Sandbox Code Playgroud)
这段代码生成5.81403333.
但我只想要5.81.
那我该怎么办?
例如,我有变量3.545555555,我想截断到3.54.
这就是我将双精度数转换为2位小数的方法:
amount = roundTwoDecimals(amount);
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}
Run Code Online (Sandbox Code Playgroud)
如果金额= 25.3569或类似的东西,这很好用,但如果金额= 25.00或金额= 25.0,那么我得到25.0!我想要的是舍入和格式化为2位小数.