Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式化字符串以删除科学符号-Java_Java_String_Floating Point_Bigdecimal - Fatal编程技术网

格式化字符串以删除科学符号-Java

格式化字符串以删除科学符号-Java,java,string,floating-point,bigdecimal,Java,String,Floating Point,Bigdecimal,我有以下代码,它拆分一个数字字符串(用空格分隔),然后创建一个浮点数组: //Split the string and then build a float array with the values. String[] tabOfFloatString = value.split(" "); int length = tabOfFloatString.length; System.out.println("Length of float string is" + length); float[

我有以下代码,它拆分一个数字字符串(用空格分隔),然后创建一个浮点数组:

//Split the string and then build a float array with the values.
String[] tabOfFloatString = value.split(" ");
int length = tabOfFloatString.length;
System.out.println("Length of float string is" + length);
float[] floatsArray = new float[length];
for (int l=0; l<length; l++) {
float res = Float.parseFloat(tabOfFloatString[l]);
    System.out.println("Float is " + res);
    floatsArray[l]=res;
}
//拆分字符串,然后使用值构建浮点数组。
字符串[]TabOffloutString=value.split(“”);
int length=taboffloutString.length;
System.out.println(“浮点字符串的长度为”+长度);
float[]floatsArray=新的float[长度];

对于(int l=0;l,浮点不包含
e
,这正是它的显示方式。您可以使用
DecimalFormat
更改它的显示方式


不过,由于浮点数的原因,您会注意到一些看起来很奇怪的数字。

下面是您的代码稍微修改过的部分。据我所知,这很有效,实际上并不关心指数的顺序:

public void function() {
    String value = "123456.0023 -3.04567E-8 -3.01967E-20";
    String[] tabOfFloatString = value.split(" ");
    int length = tabOfFloatString.length;
    System.out.println("Length of float string is" + length);
    float[] floatsArray = new float[length];
    for (int l = 0; l < length; l++) {
        String res = new BigDecimal(tabOfFloatString[l]).toPlainString();
        System.out.println("Float is " + res);
        floatsArray[l] = Float.parseFloat(res);
    }

}
public void函数(){
字符串值=“123456.0023-3.04567E-8-3.01967E-20”;
字符串[]TabOffloutString=value.split(“”);
int length=taboffloutString.length;
System.out.println(“浮点字符串的长度为”+长度);
float[]floatsArray=新的float[长度];
对于(int l=0;l
接受回答对我不起作用,什么时候做

floatsArray[l] = Float.parseFloat(res);
parseFloat(res)将非科学的anotation更改为科学的anotation,因此我必须删除它

这个成功了:

public String[] avoidScientificNotation(float[] sensorsValues)
{
     int length = sensorsValues.length;
     String[] valuesFormatted = new String[length];

     for (int i = 0; i < length; i++) 
     {
         String valueFormatted = new BigDecimal(Float.toString(sensorsValues[i])).toPlainString();
         valuesFormatted[i] = valueFormatted;
     }
    return valuesFormatted;
}
公共字符串[]avoidScientificNotation(浮点[]传感器值)
{
int length=传感器值.length;
字符串[]值格式化=新字符串[长度];
for(int i=0;i
float不包含E数字。科学表示法是表示float的方法之一。如果默认格式不适用,请查看java.text.DecimalFormat。
floatsArray[l] = Float.parseFloat(res);
public String[] avoidScientificNotation(float[] sensorsValues)
{
     int length = sensorsValues.length;
     String[] valuesFormatted = new String[length];

     for (int i = 0; i < length; i++) 
     {
         String valueFormatted = new BigDecimal(Float.toString(sensorsValues[i])).toPlainString();
         valuesFormatted[i] = valueFormatted;
     }
    return valuesFormatted;
}