2012-02-19 16 views
9

In sostanza, se il numero generato è 2.3 allora se sottraggo .5 sarà quindi 1,8 ma la funzione di arrotondamento lo renderà 2, che è quello che voglio O se la risposta è 2.99999 e sottraggo .5, la risposta è 2.49999 che dovrebbe arrotondare a 2, che è quello che voglio. La mia domanda è se la risposta è 2 pari e io sottrarre 0,5, la risposta è ora di 1,5, quindi sarà ancora arrotondare fino a 2.Arrotondare al numero intero più vicino .... sto imbrogliando o è più che sufficiente

temp1_1= Math.round(temp2_2/(360/temp_value)-.5); 

questa è la mia linea di codice per questo.

+0

Cosa è successo quando l'hai provato? –

risposta

17

ancora più semplice e veloce il potenziale

double d = 2.99999999; 
long l = (long) d; // truncate to a whole number. 

Questo sarà tutto verso 0. Math.floor() arrotonda verso l'infinito negativo. Anche Math.round (x - 0.5) arrotonda verso l'infinito negativo.

+9

Credo che questo arrotonderà i numeri negativi * su *. –

+0

da quello che so non credo che avrò mai un valore negativo. il modo in cui lo faccio funzionare finora. era una soluzione rapida di cui avevo bisogno. se dovessero sorgere problemi in futuro, farò un cambiamento. grazie per le informazioni –

33

Esiste già una funzione per farlo. Si chiama floor:

double d = Math.floor(2.9999) //result: 2.0 
3

Tutti vogliono sempre utilizzare funzioni di fantasia, ma dimenticano il modulo umile. La mia soluzione:

number = x-(x%1); 

sottrae il resto della divisione per uno, quindi x = 2.999 sarà = 2, 3.111 sarà = 3 e così via. La cosa interessante di questo è che puoi arrotondare il multiplo di qualsiasi cosa solo cambiando quella 1 in qualsiasi cosa tu voglia.

Problemi correlati