3

#で区切られた14個の値の文字列があります

0.1#5.338747#0.0#....など

各値を文字列からfloatに、または小数点以下2桁から3桁に変換したいと思います。私はこれのほとんどを長い道のりで行うことができます...

str = "0.1#0.2#0.3#0.4";
String[] results;
results = str.split("#");
float res1 = new Float(results[0]);

しかし、各浮動小数点数を小数点以下3桁にするための最良の方法はわかりません。また、forループのようなきちんとした方法でこれを実行したいのですが、理解できません。

4

5 に答える 5

4

小数点以下第3位を四捨五入して...

    String[] parts = input.split("#");
    float[] numbers = new float[parts.length];
    for (int i = 0; i < parts.length; ++i) {
        float number = Float.parseFloat(parts[i]);
        float rounded = (int) Math.round(number * 1000) / 1000f;
        numbers[i] = rounded;
    }
于 2012-04-24T09:40:53.870 に答える
2
String str = "0.1#0.2#0.3#0.4";
String[] results = str.split("#");
float fResult[] = new float[results.length()];
for(int i = 0; i < results.length(); i++) {
    fResult[i] = Float.parseFloat(String.format("%.3f",results[i]));
}
于 2012-04-24T09:37:20.060 に答える
2

あなたはグアバでそれを行うことができます:

final String str = "0.1#0.2#0.3#0.4";
final Iterable<Float> floats = Iterables.transform(Splitter.on("#").split(str), new Function<String, Float>() {
  public Float apply(final String src) {
    return Float.valueOf(src);
  }
});

またはJavaAPIを使用します。

final String str = "0.1#0.2#0.3#0.4";
final StringTokenizer strTokenizer = new StringTokenizer(str, "#");

final List<Float> floats = new ArrayList<Float>();
while (strTokenizer.hasMoreTokens()) {
    floats.add(Float.valueOf(strTokenizer.nextToken()));
}
于 2012-04-24T09:38:37.720 に答える
2

お役に立てれば...

String input = "0.1#5.338747#0.0";
String[] splittedValues = input.split("#");
List<Float> convertedValues = new ArrayList<Float>();
for (String value : splittedValues) {
    convertedValues.add(new BigDecimal(value).setScale(3, BigDecimal.ROUND_CEILING).floatValue());
}
于 2012-04-24T09:43:49.933 に答える
1

小数点以下3桁を取得するために、これを試してください。

public class Test {
    public static void main(String[] args) {
        String str = "0.12345#0.2#0.3#0.4";
        String[] results;
        results = str.split("#");
        float res1 = new Float(results[0]);
        System.out.println("res = " + res1);
        // cut to right accuracy
        res1 = ((int) (res1 * 1000)) / 1000f;
        System.out.println("res = " + res1);
    }
}
于 2012-04-24T09:43:01.193 に答える