Умножьте строку в Java - PullRequest
       19

Умножьте строку в Java

0 голосов
/ 02 января 2011

У меня есть строка, содержащая число, и я хотел бы умножить это число на 1.28

Вот как присваивается строка

String PRICE = dataRecord.get( "PRICE" );

Ответы [ 7 ]

7 голосов
/ 02 января 2011

Вам необходимо получить числовое представление данных и выполнить умножение на них. Поскольку пример "цена", я предполагаю, что деньги вовлечены, и поэтому рекомендую десятичный тип.

String price = "9.99";
BigDecimal priceDecimal = new BigDecimal( price );
BigDecimal total = priceDecimal.multiply( new BigDecimal( "1.28" ) );
System.out.println( total );
0 голосов
/ 03 января 2011

Простой способ: сделать следующее Double.ParseInt ("Stringname"), будет возвращать двойное значение Пожалуйста, дайте кредит, если вам нравится ответ

0 голосов
/ 02 января 2011

математика с плавающей точкой.Используйте BigDecimal и , вам нужно установить масштаб на результат , чтобы вызвать округление, так как, скорее всего, масштаб будет больше, чем вы хотите.

private static final BigDecimal MULT = new BigDecimal("1.28");

BigDecimal price = new BigDecimal(dataRecord.get("PRICE"));
BigDecimal result = price.multiply(MULT).setScale(2, RoundingMode.HALF_EVEN);
0 голосов
/ 02 января 2011

Преобразуйте строку в двойное число, чтобы выполнить умножение.Double.parseDouble () - это метод, который вы можете использовать.Я решил обернуть это в блок try, если строка искажена и выдается ошибка (если цена по какой-то причине не является числом - например, 5.67b или 8..34).

String price = dataRecord.get( "PRICE" );
try {
    double p = Double.parseDouble(price);
    double result = p*1.28;
    System.out.println(result);
} catch(NumberFormatException e) { // ERROR HANDLING
    System.out.println("Error parsing string: Price is not a number.");
}

Для справки вот документация для parseDouble ().

public static double parseDouble (String s) throws NumberFormatException

Возвращает новый double, инициализированный значением, представленнымуказанная строка, выполняемая методом valueOf класса Double.

0 голосов
/ 02 января 2011

Надеюсь, это то, что вы ищете

String priceAsString = dataRecord.get( "PRICE" );

double priceAsInt = Double.valueOf(priceAsString).doubleValue();
double multipliedPrice = priceAsInt * 1.28;

Если вам не нужно преобразовывать его в строку после умножения значения, просто удалите последнюю строку.

0 голосов
/ 02 января 2011

То, что вы действительно хотите, это:

double price = dataRecord.getDouble( "PRICE" );

Предполагая, что dataRecord является объектом ResultSet. В любом случае, было бы намного лучше использовать BigDecimals, и, если PRICE действительно хранится в объекте String, то я предполагаю, что вы сделали это, потому что знаете о проблеме с плавающей точностью.

0 голосов
/ 02 января 2011

Лучше было бы использовать правильный объект с двойным типом поля.

double price = dataRecord.price * 1.28;

Аналогично примеру @ Роба, который дает тот же ответ. Вы решаете, что проще. ;)

double price = 9.99;
double total = price * 1.28;
System.out.printf("%.4f%n", total);

Для денег я рекомендую использовать double с соответствующим округлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...