Преобразуйте строку для удвоения - Java

Ничего себе, существует много вопросов там:

  • возможно выполнить байт-код (.pyc) файл непосредственно от интерпретатора Python, но я не видел доступных инструментов путаницы байт-кода.

  • я не знаю ни о ком "все в одном" решении для развертывания, но:

    • Для Windows Вы могли использовать NSIS ( http://nsis.sourceforge.net/Main_Page ). Проблема здесь состоит в том, что, в то время как OSX / *nix идет с Python, Windows не делает. Если бы Вы не готовы создать двоичный файл с py2exe, я не уверен, что проблемы лицензирования окружили бы распределение среды выполнения Python (не говоря уже о технических).

    • Вы могли упаковать распределение OS X с помощью формата "пакета", и *ОТКЛОНЯЮТ, имеет свои собственные соглашения для установки программного обеспечения - обычно, "делают установку" сценарием.

Hope, которая была услужлива.

25
задан Anderson Green 19 July 2013 в 02:34
поделиться

4 ответа

Взгляните на java.text.NumberFormat . Например:

import java.text.*;
import java.util.*;

public class Test
{
    // Just for the sake of a simple test program!
    public static void main(String[] args) throws Exception
    {
        NumberFormat format = NumberFormat.getInstance(Locale.US);

        Number number = format.parse("835,111.2");
        System.out.println(number); // or use number.doubleValue()
    }
}

В зависимости от того, какое количество вы используете, вы можете вместо этого выполнить синтаксический анализ до BigDecimal . Самый простой способ сделать это, вероятно:

BigDecimal value = new BigDecimal(str.replace(",", ""));

или использовать DecimalFormat с setParseBigDecimal (true) :

DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(Locale.US);
format.setParseBigDecimal(true);
BigDecimal number = (BigDecimal) format.parse("835,111.2");
47
ответ дан 28 November 2019 в 18:17
поделиться

Использовать java.text.DecimalFormat:

DecimalFormat - это конкретный подкласс NumberFormat форматирует десятичный формат числа. Он имеет множество функций разработан, чтобы сделать возможным синтаксический анализ и форматировать числа в любом языковом стандарте, включая поддержку западного, арабского, и индийские цифры. Он также поддерживает различные виды чисел, в том числе целые числа (123), числа с фиксированной точкой (123.4), научная запись (1.23E4), проценты (12%) и валюта сумм (123 доллара). Все это может быть локализовано.

5
ответ дан 28 November 2019 в 18:17
поделиться

Самый простой - не всегда самый правильный. Вот самый простой вариант:

String s = "835,111.2";
// NumberFormatException possible.
Double d = Double.parseDouble(s.replaceAll(",",""));

Я не стал беспокоиться о локали, так как вы специально заявили, что хотите заменить запятые, поэтому я предполагаю, что вы уже установили себя в качестве локали, где запятая - это разделитель тысяч, а точка - десятичный разделитель. Здесь есть лучшие ответы, если вы хотите правильного (с точки зрения интернационализации) поведения.

10
ответ дан 28 November 2019 в 18:17
поделиться

Ссылка может содержать более тысячи слов

// Format for CANADA locale
Locale locale = Locale.CANADA;
String string = NumberFormat.getNumberInstance(locale).format(-1234.56);  // -1,234.56

// Format for GERMAN locale
locale = Locale.GERMAN;
string = NumberFormat.getNumberInstance(locale).format(-1234.56);   // -1.234,56

// Format for the default locale
string = NumberFormat.getNumberInstance().format(-1234.56);


// Parse a GERMAN number
try {
    Number number = NumberFormat.getNumberInstance(locale.GERMAN).parse("-1.234,56");
    if (number instanceof Long) {
        // Long value
    } else {
        // Double value
    }
} catch (ParseException e) {
}
2
ответ дан 28 November 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: