我正在努力将11120.6亿美元兑换成11.2亿美元。我的问题是如何在小数点后每次移动4位小数,因为我将在excel中动态插入值。
答案 0 :(得分:1)
原始标题有点误导,所以我的答案提供了不止一种方法来完成这项任务。第一部分反映了新标题的答案。
11,120.6左移四位小数不会产生1.12;更像是1.112或1.11(取决于小数位数)。但无论如何,这里有一些想法:
DecimalFormat方式:
float num = 11120.6;
DecimalFormat numFormat = new DecimalFormat("#.00");
System.out.println(numFormat.format(num));
如果它纯粹是视觉效果,你可以这样做:
float num = 11120.6;
System.out.println(String.format("%.2f", num));
那个会在小数点右边给你两个小数位,产生1.11。
或者这样的事情怎么样?
float num = 11120.6;
num /= 10000.0;
这将给你1.11206。
您可以根据数字创建 if else 逻辑或类似于div /倍数的东西,例如:
if (num >= 10)
{
num /= 10.0;
}
else if (num >= 100)
{
num /= 100.0;
}
...etc...
您也可以执行类似的操作以及与上述类似的逻辑:
BigDecimal num = new BigDecimal("11120.6");
num = num.movePointRight(-4);
除非有人能想出更好的方法,否则你还需要知道之前的数字是数百万的代表,而新的数字是数十亿。可能将它作为枚举存储在单独的变量中。
你可以做的其他事情,但它效率不高,就是我们在大学时的C ++课程中所做的事情。您可以为特定数量的大小创建多个数组或列表(取决于您的操作)。如果要显示多个say ... listBillions,您可以将该列表中的任何数字除以1000000000.0,或将其格式化为字符串。所以,最后你有几十个,几百个,几千个等等的列表,你总会知道listBillions [i]只要是显示的任何形式的十亿就可以了。