Java 进行高级数字计算?2.1k等于2100等。。?

Java 进行高级数字计算?2.1k等于2100等。。?,java,numbers,Java,Numbers,如标题所示,如果输入值为2.1k,则应等于2100,如果输入值为3.7k,则应为3700,依此类推。我有一些代码如下,我没有真正尝试过任何东西,只是在思考公式是如何实现的: String arg = args[0]; if(arg.contains("k")) { args[0].replace("k", "000"); } 对于k示例,它将是: int count = StringUtils.countMatches(arg, "k");//count the amount of k

如标题所示,如果输入值为
2.1k
,则应等于
2100
,如果输入值为
3.7k
,则应为
3700
,依此类推。我有一些代码如下,我没有真正尝试过任何东西,只是在思考公式是如何实现的:

String arg = args[0];
if(arg.contains("k")) {
    args[0].replace("k", "000");
}

对于
k
示例,它将是:

int count = StringUtils.countMatches(arg, "k");//count the amount of k's
double decNumber = Double.parseDouble(arg.replace("k", "");//removes all k's and parse to a double
double finalNumber = decNumber * Math.pow(1000, k);//multiple by 1000^k

这适用于十进制数后的任意数量的k。

对于
k
示例,它将是:

int count = StringUtils.countMatches(arg, "k");//count the amount of k's
double decNumber = Double.parseDouble(arg.replace("k", "");//removes all k's and parse to a double
double finalNumber = decNumber * Math.pow(1000, k);//multiple by 1000^k

这适用于十进制数后的任意数量的k。

正确的方法看起来更像:

String arg = args[0];
        if(arg.contains("k")) {

           newVal = args[0].replace("k", "");  //just drop the K and be left with a decimal
            newVal = parseInt(args[0] * 1000);  //New value is whatever was passed in times 1000
        }

正确的方法更像是:

String arg = args[0];
        if(arg.contains("k")) {

           newVal = args[0].replace("k", "");  //just drop the K and be left with a decimal
            newVal = parseInt(args[0] * 1000);  //New value is whatever was passed in times 1000
        }

您可以检查
arg
是否以“k”结尾,它是否解析“k”之前每个字符前面的双精度值并乘以1000。差不多

String arg = "2.1k";
if (arg.endsWith("k")) {
    int val = (int) (Double.parseDouble(arg.substring(0, arg.length() - 1))
           * 1000);
    arg = String.valueOf(val);
}
System.out.println(arg);
输出

2100

您可以检查
arg
是否以“k”结尾,它是否解析“k”之前每个字符前面的双精度值并乘以1000。差不多

String arg = "2.1k";
if (arg.endsWith("k")) {
    int val = (int) (Double.parseDouble(arg.substring(0, arg.length() - 1))
           * 1000);
    arg = String.valueOf(val);
}
System.out.println(arg);
输出

2100

嗯,您发布的代码片段添加了太多的零,而且它也没有删除小数点。“…我没有真正尝试过任何东西…”-您应该这样做,如果遇到问题,请回来询问您遇到的具体困难。
.replace
不会更改字符串,它会返回修改后的字符串。嗯,您发布的代码片段添加了太多的零,也没有删除小数点。“…我没有真正尝试过任何东西…”-您应该这样做,如果遇到问题,请回来询问您遇到的具体困难。
。replace
不会更改字符串,它返回修改后的字符串,我想我的答案应该是JavaScripty,而不是Java。但是你明白了,字符串是不可变的
replace
创建新字符串,而不影响旧字符串。我想我的答案应该更符合JavaScripty而不是Java。但是你明白了,字符串是不可变的<代码>替换创建新字符串,而不影响旧字符串。