Ho un istruzione sql di un calcolo matematico
((PRORIV+(PRORIV*20)/100 +0.49)/0.5*10+0.5)/10*0.5 AS PREZPUB
risultato di PREZPUB = 51.844999999998
dovrei arrotondarlo e farlo sucire a 51.80 come devo fare ? che istruzione usare ?
garzie
Ho un istruzione sql di un calcolo matematico
((PRORIV+(PRORIV*20)/100 +0.49)/0.5*10+0.5)/10*0.5 AS PREZPUB
risultato di PREZPUB = 51.844999999998
dovrei arrotondarlo e farlo sucire a 51.80 come devo fare ? che istruzione usare ?
garzie
prova con ROUND($float,1) e poi lo formatti con due decimali, il secondo decimale sara' zero.
puoi farlo sia con SQL che con PHP
con php:
echo number_format(round(51.844999999998, 1), 2);
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
doveri farlo in sql è un campo calcolato nel db ..
non concosendo la sintassi ..........
io ho provato così
ROUND(((PRORIV+(PRORIV*20)/100 +0.49)/0.5*10+0.5)/10*0.5,1,2)
ma il risultato è .........
42.2000000000003
dovrebbe semplicemnte darmi 42.20
cmq grazie dell'aiuto..
round(quel float che ti pare, 2)
per avere il secondo decimale a zero basterebbe indicare un solo decimale invece di due e poi aggiungere lo zero, ma dipende anche "come" vuoi arrotondare .....
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
scusa così ?
round(float (((PRORIV+(PRORIV*proiva)/100 +0.49)/0.5*10+0.5)/10*0.5),2))
non è corretto ...
Originariamente inviato da salvatore78
scusa così ?
round(float (((PRORIV+(PRORIV*proiva)/100 +0.49)/0.5*10+0.5)/10*0.5),2))
non è corretto ...dal manuale mysql.....
ROUND(X), ROUND(X,D)
Returns the argument X, rounded to the nearest integer. With two arguments, returns X rounded to D decimal places. D can be negative to cause D digits left of the decimal point of the value X to become zero.
mysql> SELECT ROUND(-1.23);
-> -1
mysql> SELECT ROUND(-1.58);
-> -2
mysql> SELECT ROUND(1.58);
-> 2
mysql> SELECT ROUND(1.298, 1);
-> 1.3
mysql> SELECT ROUND(1.298, 0);
-> 1
mysql> SELECT ROUND(23.298, -1);
-> 20
The return type is the same type as that of the first argument (assuming that it is integer, double, or decimal). This means that for an integer argument, the result is an integer (no decimal places).
The behavior of ROUND() when the argument is halfway between two integers depends on the C library implementation. Different implementations round to the nearest even number, always up, always down, or always toward zero. If you need one kind of rounding, you should use a well-defined function such as TRUNCATE() or FLOOR() instead.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ok ho capito ma son nnumeri interi.. a me serve che mi tronchi .. di due numeri dopo la virgola...
interi???? :master:Originariamente inviato da salvatore78
ok ho capito ma son nnumeri interi.. a me serve che mi tronchi .. di due numeri dopo la virgola...
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ok 42.2000000000003 deve diventare 42.20
dicimao che son ad un punto morto.. quella è l'istruzione ed il ristultato.. più di uelo non so fare.. e non so dove ppellarmi visto che le ho porvate tutte..