如何修改 android 中的 Double 值
How to modify Double value in android
假设,我有一个 double 值。
double dble = 5.91742691
现在我可以得到小数点后两位数的那个值吗?我的意思是,我可以通过编程方式从那里获得 5.91 吗?
另外,假设我想从双精度值中获取一个整数,如果双精度值为 X.9XXXXX。这里我的意思是说,我要比较AFTER-POINT值。为了您的理解,dble 的 AFTER-POINT 值为 91742691。我怎样才能做到这一点?
如果要将双精度截断为小数点后两位,请执行
double twoDecDbl = (int)(dble * 100) / 100.0; // 5.91
或
double twoDecDbl = Math.floor(dble * 100) / 100; // 5.91
但是,如果你想得到小数点后的数字作为整数(我不知道你为什么要这样做),那么做
long decimals = Long.parseLong(("" + dble).split("\.")[1]); // 91742691
注意:int
的最大值是2,147,483,647(那里有10位),但是double可以容纳小数点后的16位,所以long
必须使用以确保安全(可以有 19 位数字)。或者,您可以通过删除包装解析将其保留为 String
。
对于 #1 试试看
NumberFormat formatter = new DecimalFormat("#0.00");
String s = formatter.format(dble);
double num = Double.valueOf(s);
或
dble = Math.floor(dble * 100) / 100;
#2 试一试
double num = dble - (int)dble;
万一Integer.MIN_VALUE < dble < Integer.MAX_VALUE
假设,我有一个 double 值。
double dble = 5.91742691
现在我可以得到小数点后两位数的那个值吗?我的意思是,我可以通过编程方式从那里获得 5.91 吗?
另外,假设我想从双精度值中获取一个整数,如果双精度值为 X.9XXXXX。这里我的意思是说,我要比较AFTER-POINT值。为了您的理解,dble 的 AFTER-POINT 值为 91742691。我怎样才能做到这一点?
如果要将双精度截断为小数点后两位,请执行
double twoDecDbl = (int)(dble * 100) / 100.0; // 5.91
或
double twoDecDbl = Math.floor(dble * 100) / 100; // 5.91
但是,如果你想得到小数点后的数字作为整数(我不知道你为什么要这样做),那么做
long decimals = Long.parseLong(("" + dble).split("\.")[1]); // 91742691
注意:int
的最大值是2,147,483,647(那里有10位),但是double可以容纳小数点后的16位,所以long
必须使用以确保安全(可以有 19 位数字)。或者,您可以通过删除包装解析将其保留为 String
。
对于 #1 试试看
NumberFormat formatter = new DecimalFormat("#0.00");
String s = formatter.format(dble);
double num = Double.valueOf(s);
或
dble = Math.floor(dble * 100) / 100;
#2 试一试
double num = dble - (int)dble;
万一Integer.MIN_VALUE < dble < Integer.MAX_VALUE