Moltiplicare una stringa in Java
-
14-10-2019 - |
Domanda
Ho una stringa che contiene un numero e vorrei moltiplicare quel numero con 1.28
Ecco come viene assegnata la stringa
String PRICE = dataRecord.get( "PRICE" );
Soluzione
È necessario ottenere una rappresentazione numerica dei dati ed eseguire una moltiplicazione su di esso. Dal momento che l'esempio è "prezzo", sto assumendo il denaro è coinvolto, e sarà quindi consigliare un tipo decimale.
String price = "9.99";
BigDecimal priceDecimal = new BigDecimal( price );
BigDecimal total = priceDecimal.multiply( new BigDecimal( "1.28" ) );
System.out.println( total );
Altri suggerimenti
Un modo migliore sarebbe quella di utilizzare un oggetto proprio con un tipo di doppio campo.
double price = dataRecord.price * 1.28;
Simile a @ esempio di Rob, che dà la stessa risposta. Siete voi a decidere che è più semplice. ;)
double price = 9.99;
double total = price * 1.28;
System.out.printf("%.4f%n", total);
Per i soldi, mi consiglia di utilizzare doppia con adeguata arrotondamenti.
Che cosa si vuole veramente, è il seguente:
double price = dataRecord.getDouble( "PRICE" );
Supponendo che dataRecord è un oggetto ResultSet. In ogni modo, sarebbe molto molto meglio usare BigDecimals, e, se il prezzo è davvero memorizzato in un oggetto String, quindi presumo che hai fatto questo, perché si sa circa il problema del flottante di precisione.
Convertire la stringa in un doppio al fine di fare la moltiplicazione. Double.parseDouble () è un metodo che si può usare. Ho scelto di avvolgere questo in un blocco try nel caso in cui la stringa non è corretto e viene generato un errore (se il prezzo è per qualche motivo non è un numero -. Ex 5.67b oppure 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.");
}
Per il vostro riferimento, ecco la documentazione per parseDouble ().
public static doppia parseDouble (String s) getta NumberFormatException
restituisce un nuovo doppio inizializzato al valore rappresentato dalla stringa specificata, interpretato da metodo valueOf di classe di doppio.
calcoli in virgola mobile. Usa BigDecimal e è necessario impostare la scala sul risultato per chiamare in causa l'arrotondamento come molto probabilmente la scala sarà più grande di quello che si vuole.
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);
Un modo semplice: effettuare le seguenti operazioni Double.ParseInt ( "String Name"), restituirà il valore doppio PLS dare qualche credito, se vi piace la risposta ??p>
Spero che questo è quello che stai cercando
String priceAsString = dataRecord.get( "PRICE" );
double priceAsInt = Double.valueOf(priceAsString).doubleValue();
double multipliedPrice = priceAsInt * 1.28;
Se non è necessario convertirlo in una stringa dopo moltiplicando il valore è sufficiente rimuovere l'ultima riga.