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" );
È stato utile?

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

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top