LINUX.ORG.RU

История изменений

Исправление Bioreactor, (текущая версия) :

В нормальном языке программирования это настраивается:

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class Test {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        double val = nf.parse(text).doubleValue();
        String s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        text = "2.71828";
        
        nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 271,828
// 2
// 2.71828

Можно настроить через _любой_ символ, какой пожелаете:

         String text = "2_71828";
        
        DecimalFormatSymbols dfs= new DecimalFormatSymbols(Locale.US);
        dfs.setDecimalSeparator('_');
        dfs.setGroupingSeparator('/'); 
        DecimalFormat df = new DecimalFormat("0.#", dfs);
        
        df.setMaximumFractionDigits(5);
        double val = df.parse(text).doubleValue();
        System.out.println(val);
        String s = df.format(val);
        System.out.println(s);
        
        // 2.71828
        // 2_71828

Можете даже преобразовывать форматы в «двуязычной» стране

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class TestCanadian {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf_in = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
        nf_in.setMaximumFractionDigits(5);
        double val = nf_in.parse(text).doubleValue();
        String s = nf_in.format(val);
        System.out.println(s);

        NumberFormat nf_out = NumberFormat.getNumberInstance(Locale.CANADA);
        nf_out.setMaximumFractionDigits(5);
        s = nf_out.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 2.71828

Исправление Bioreactor, :

В нормальном языке программирования это настраивается:

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class Test {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        double val = nf.parse(text).doubleValue();
        String s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        text = "2.71828";
        
        nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 271,828
// 2
// 2.71828

Можно настроить через _любой_ символ, какой пожелаете:

         String text = "2_71828";
        
        DecimalFormatSymbols dfs= new DecimalFormatSymbols(Locale.US);
        dfs.setDecimalSeparator('_');
        dfs.setGroupingSeparator('/'); 
        DecimalFormat df = new DecimalFormat("0.#", dfs);
        
        df.setMaximumFractionDigits(5);
        double val = df.parse(text).doubleValue();
        System.out.println(val);
        String s = df.format(val);
        System.out.println(s);
        
        // 2.71828
        // 2_71828

Можете даже преобразовывать форматы в «двуязычной» стране

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class TestCanadian {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf_in = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
        nf_in.setMaximumFractionDigits(5);
        double val = nf_in.parse(text).doubleValue();
        String s = nf_in.format(val);
        System.out.println(s);

        NumberFormat nf_out = NumberFormat.getNumberInstance(Locale.CANADA);
        nf_out.setMaximumFractionDigits(5);
        s = nf_out.format(val);
        System.out.println(s);
    }
}

Исходная версия Bioreactor, :

В нормальном языке программирования это настраивается:

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class Test {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        double val = nf.parse(text).doubleValue();
        String s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        text = "2.71828";
        
        nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 271,828
// 2
// 2.71828

Можно настроить через _любой_ символ, какой пожелаете:

         String text = "2_71828";
        
        DecimalFormatSymbols dfs= new DecimalFormatSymbols(Locale.US);
        dfs.setDecimalSeparator('_');
        dfs.setGroupingSeparator('/'); 
        DecimalFormat df = new DecimalFormat("0.#", dfs);
        
        df.setMaximumFractionDigits(5);
        double val = df.parse(text).doubleValue();
        System.out.println(val);
        String s = df.format(val);
        System.out.println(s);
        
        // 2.71828
        // 2_71828