如何将任何 double 数据类型转换为 0.00(小数点后 2 位)格式并接受另一种 double 数据类型(Android/Java)?
How to make any double datatype into 0.00 (2 digits after decimal point) format taking in another double datatype (Android/Java)?
我是 android 开发的初学者。如何将双数据类型即 56.32534 转换为 56.33?但我想把它放在一个双变量中。我知道一种方法,但它接受字符串。
Double value = 56.32534;
DecimalFormat df = new DecimalFormat("0.##");
String newvalue = df.format(value);
这里,newvalue
是一个字符串。但我想采用双数据类型。
我需要使用它的数值,而不仅仅是为了显示目的。
您可以使用 Math.round()
:
double value = 56.32534;
double rounded = Math.round(100 * value) / 100.0;
先乘后除以 100 是必要的,因为 Math.round()
舍入到最接近的 long
值。
如果你想将其推广到可变位数,你可以使用这样的东西:
public double round(double value, int digits) {
double scale = Math.pow(10, digits);
return Math.round(value * scale) / scale;
}
如果 digits
不是正数,这甚至会起作用;如果 digits
为 0,它将舍入到最接近的整数;如果 digits
为 -1,则舍入到最接近的 10;如果 digits
为 -2,则舍入到最接近的 100,等等
我们需要更精确地确定您要执行的操作。你想以这种方式显示它还是只以这种方式使用它的数值?
如果是显示器问题,你的解决方案就可以了。之后您总是可以从字符串中取回浮点数。
另一方面,如果您想将其用作数值,您可以做的是
double rounded = (double) Math.round(myfloat * 100) /100;
我认为它有效。虽然我在手机上无法测试
我是 android 开发的初学者。如何将双数据类型即 56.32534 转换为 56.33?但我想把它放在一个双变量中。我知道一种方法,但它接受字符串。
Double value = 56.32534;
DecimalFormat df = new DecimalFormat("0.##");
String newvalue = df.format(value);
这里,newvalue
是一个字符串。但我想采用双数据类型。
我需要使用它的数值,而不仅仅是为了显示目的。
您可以使用 Math.round()
:
double value = 56.32534;
double rounded = Math.round(100 * value) / 100.0;
先乘后除以 100 是必要的,因为 Math.round()
舍入到最接近的 long
值。
如果你想将其推广到可变位数,你可以使用这样的东西:
public double round(double value, int digits) {
double scale = Math.pow(10, digits);
return Math.round(value * scale) / scale;
}
如果 digits
不是正数,这甚至会起作用;如果 digits
为 0,它将舍入到最接近的整数;如果 digits
为 -1,则舍入到最接近的 10;如果 digits
为 -2,则舍入到最接近的 100,等等
我们需要更精确地确定您要执行的操作。你想以这种方式显示它还是只以这种方式使用它的数值?
如果是显示器问题,你的解决方案就可以了。之后您总是可以从字符串中取回浮点数。
另一方面,如果您想将其用作数值,您可以做的是
double rounded = (double) Math.round(myfloat * 100) /100;
我认为它有效。虽然我在手机上无法测试