我已经搜索过,找不到答案。
无论如何,我需要将一个字符串(从一个数字转换)到另一个带小数点的字符串"假设"。这个小数精度需要变化。
例如,让我们说我的伪方法是:
private String getPaddedNumber(String number, Integer decimalPlaces)...
所以用户可以:
getPaddedNumber("200", 0); // "200"
getPaddedNumber("200.4", 2); // "20040"
getPaddedNumber("200.4", 1); // "2004"
getPaddedNumber("200.4", 4); // "2004000"
getPaddedNumber("200.", 0); // "200" this is technically incorrect but we may get values like that.
现在,我实际上已经编写了一个方法来完成所有这些但它非常强大。然后我想知道," Java已经有了DecimalFormat或已经有这样做的东西吗?
感谢。
修改
这些数字不会以科学记数形式出现。
数字的一些例子:
"55"
"78.9"
"9444.933"
结果永远不会有小数点。
更多例子:
getPaddedNumber("98.6", 2); // "9860"
getPaddedNumber("42", 0); // "42"
getPaddedNumber("556.7", 5); // "55670000"
EDIT2
这是我目前正在使用的代码。它并不漂亮,但似乎有效。但我无法帮助,但觉得我重新发明了轮子。 Java是否有本地化的功能?
private static String getPaddedNumber(String number, int decimalPlaces) {
if (number == null) return "";
if (decimalPlaces < 0) decimalPlaces = 0;
String working = "";
boolean hasDecimal = number.contains(".");
if (hasDecimal) {
String[] split = number.split("\\.");
String left = split[0];
String right;
if (split.length > 1)
right = split[1];
else
right = "0";
for (int c = 0; c < decimalPlaces - right.length(); c++)
working += "0";
return left + right + working;
}
for (int c = 0; c < decimalPlaces; c++)
working += "0";
return number + working;
}
答案 0 :(得分:1)
您可以使用scientific notation
类将String test = "200.4E2";
int val = new BigDecimal(test).intValue();
double val1 = new BigDecimal(test).doubleValue();
System.out.println("" + val);
转换为可用的数字:
public static void main(String[] args) throws FileNotFoundException {
String test = "200.4E2";
String test2 = "200E0";
String val = new BigDecimal(test).toPlainString();
String val1 = new BigDecimal(test2).toPlainString();
System.out.println("" + val);
System.out.println("" + val1);
}
等...
**** ***** UPDATE
String test = "200.4" + "E" + 2;
您可以将数字连接在一起以获得科学记数法:
private static String getPaddedNumber(String number, int decimalPlaces) {
String temp = number + "E" + decimalPlaces;
return new BigDecimal(temp).toPlainString();
}
完整方法
{{1}}
代码来自here
答案 1 :(得分:1)
像number * Math.pow(10, decimalPlaces)