0

我有一个包含数字的字符串,我想将该数字乘以1.28

这是字符串的分配方式

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

7 回答 7

7

您需要获取数据的数字表示并对其执行乘法运算。由于示例是“价格”,我假设涉及金钱,因此建议使用小数类型。

String price = "9.99";
BigDecimal priceDecimal = new BigDecimal( price );
BigDecimal total = priceDecimal.multiply( new BigDecimal( "1.28" ) );
System.out.println( total );
于 2011-01-02T19:53:24.963 回答
0

更好的方法是使用具有双字段类型的适当对象。

double price = dataRecord.price * 1.28;

类似于@Rob 给出相同答案的示例。你决定哪个更简单。;)

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

为了钱,我建议使用适当舍入的双精度。

于 2011-01-02T19:54:02.497 回答
0

你真正想要的是:

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

假设 dataRecord 是一个 ResultSet 对象。无论如何,使用 BigDecimals 会好得多,而且,如果 PRICE 确实存储在 String 对象中,那么我假设您这样做是因为您知道浮点精度问题。

于 2011-01-02T19:56:57.617 回答
0

我希望这就是你要找的

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

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

如果在乘以值后不需要将其转换为字符串,只需删除最后一行。

于 2011-01-02T19:58:15.313 回答
0

将字符串转换为双精度以进行乘法运算。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() 的文档。

公共静态双 parseDouble(String s) 抛出 NumberFormatException

返回一个新的 double,初始化为由指定 String 表示的值,由 Double 类的 valueOf 方法执行。

于 2011-01-02T20:11:37.803 回答
0

浮点数学。使用 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);
于 2011-01-02T20:24:14.303 回答
0

简单的方法:执行以下 Double.ParseInt("Stringname"),如果你喜欢这个答案,将 reutnr 双值 PLS 给予一些信任

于 2011-01-02T21:14:36.043 回答