Limitare i galleggianti a due punti decimali


1691

Voglio aessere arrotondato a 13.95 .

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999

La roundfunzione non funziona nel modo previsto.



6
Hmm ... Stai cercando di rappresentare la valuta? In tal caso, non dovresti usare float per dollari. Probabilmente potresti usare i float per i penny, o qualunque sia la più piccola unità di valuta comune che stai cercando di modellare, ma la migliore pratica è usare una rappresentazione decimale, come suggerito da HUAGHAGUAH nella sua risposta.
SingleNegationElimination

63
È importante non rappresentare la valuta in virgola mobile. I galleggianti non sono precisi. Ma gli importi in centesimi o centesimi sono numeri interi. Pertanto gli interi sono il modo corretto di rappresentare la valuta.
Davoud Taghawi-Nejad,

2
@ DavoudTaghawi-Nejad o più al punto ... The Decimal Type
Basic

17
Probabilmente sto arrivando troppo tardi qui, ma volevo chiedere, gli sviluppatori di Python hanno risolto questo problema? Perché quando giro (13.949999999999999, 2), ottengo semplicemente 13.95. L'ho provato in Python 2.7.6 e 3.4. Funziona. Non sono sicuro che 2.7 fosse presente nel 2009. Forse è una cosa di Python 2.5?
bad_keypoints il

Risposte:


1690

Stai incontrando il vecchio problema con i numeri in virgola mobile che non tutti i numeri possono essere rappresentati esattamente. La riga di comando mostra solo il modulo in virgola mobile completo dalla memoria.

Con la rappresentazione in virgola mobile, la versione arrotondata ha lo stesso numero. Poiché i computer sono binari, memorizzano i numeri in virgola mobile come numeri interi e quindi li dividono per una potenza di due, quindi 13,95 sarà rappresentato in modo simile a 125650429603636838 / (2 ** 53).

I numeri a doppia precisione hanno 53 bit (16 cifre) di precisione e i float regolari hanno 24 bit (8 cifre) di precisione. Il tipo a virgola mobile in Python utilizza la doppia precisione per memorizzare i valori.

Per esempio,

>>> 125650429603636838/(2**53)
13.949999999999999

>>> 234042163/(2**24)
13.949999988079071

>>> a = 13.946
>>> print(a)
13.946
>>> print("%.2f" % a)
13.95
>>> round(a,2)
13.949999999999999
>>> print("%.2f" % round(a, 2))
13.95
>>> print("{:.2f}".format(a))
13.95
>>> print("{:.2f}".format(round(a, 2)))
13.95
>>> print("{:.15f}".format(round(a, 2)))
13.949999999999999

Se stai cercando solo due cifre decimali (per visualizzare un valore di valuta, ad esempio), hai un paio di scelte migliori:

  1. Usa numeri interi e memorizza valori in centesimi, non in dollari, quindi dividi per 100 per convertire in dollari.
  2. Oppure usa un numero in virgola fissa come il decimale .

27
@Christian C'è una differenza fondamentale tra il valore memorizzato e la modalità di visualizzazione di quel valore. La formattazione dell'output dovrebbe consentire di aggiungere il riempimento come richiesto, nonché l'aggiunta di separatori di virgole, ecc.
Base

22
vale la pena ricordare che "%.2f" % round(a,2)è possibile inserire non solo in printf, ma anche in cose comestr()
andilabs

20
perché le persone assumono sempre valuta negli arrotondamenti in virgola mobile? a volte vuoi solo lavorare con meno precisione.
worc,

9
@radtek: devi capire che il valore binario (di tipo float) è solo l'approssimazione disponibile più vicina al numero decimale (che conosci come essere umano). Non esiste un valore binario (finemente rappresentabile) come 0,245. Semplicemente non esiste e matematicamente non può esistere. Il valore binario che è il più vicino a 0,245 è leggermente inferiore a 0,245, quindi naturalmente viene arrotondato per difetto. Allo stesso modo, non esiste nulla come 0,225 in binario, ma il valore binario che è il più vicino a 0,225 è leggermente maggiore di 0,225, quindi naturalmente arrotonda per eccesso.
John Y,

12
@radtek: hai letteralmente chiesto una spiegazione. La soluzione più semplice è davvero da usare Decimal, e quella era una delle soluzioni presentate in questa risposta. L'altro era convertire le quantità in numeri interi e usare l'aritmetica dei numeri interi. Entrambi questi approcci sono comparsi anche in altre risposte e commenti.
John Y,

586

Esistono nuove specifiche di formato, Mini-lingua di specifica del formato di stringa :

Puoi fare lo stesso di:

"{:.2f}".format(13.949999999999999)

Nota 1: quanto sopra restituisce una stringa. Per ottenere il galleggiante, basta avvolgere con float(...):

float("{:.2f}".format(13.949999999999999))

Nota 2: il wrapping con float()non cambia nulla:

>>> x = 13.949999999999999999
>>> x
13.95
>>> g = float("{:.2f}".format(x))
>>> g
13.95
>>> x == g
True
>>> h = round(x, 2)
>>> h
13.95
>>> x == h
True

17
per aggiungere anche le virgole che puoi '{0:,.2f}'.format(1333.949999999)stampare '1,333.95'.
Stephen Blum,

@ OnurYıldırım: sì, ma puoi avvolgerlo con float(); float("{0:.2f}".format(13.9499999))
Jossef Harush,

5
@JossefHarush puoi avvolgerlo con float (), ma non hai guadagnato nulla. Ora hai di nuovo un galleggiante, con la stessa imprecisione. 13.9499999999999 e 13.95 sono lo stesso galleggiante.
Ned Batchelder,

4
@NedBatchelder: sono d'accordo che sono uguali, ma questo limita il float a due punti decimali :)
Jossef Harush

8
A proposito, da Python 3.6 possiamo usare f-string:f"Result is {result:.2f}"
Andrey Semakin,

289

Il built-in round()funziona perfettamente in Python 2.7 o versioni successive.

Esempio:

>>> round(14.22222223, 2)
14.22

Consulta la documentazione .


1
Quindi devo capire che si tratta di un errore di Python 2.7? Perché una funzione così fondamentale produrrebbe risultati diversi dalla v 2.7 alla v 3?
MikeM,

ma round(2.16, 1)dare 2.2perché pitone solo offrono una truncatefun
jiamo

Ad esempio, se si tenta di arrotondare il valore 2.675 a due cifre decimali, si ottiene questo >>> round(2.675, 2) 2.67 docs.python.org/2/tutorial/floatingpoint.html
danger89

4
Dalla pagina della documentazione di Python 3:Note The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float.
Richard Dally,

Si noti che se si tenta di utilizzare questo metodo per stampare un numero come 1.00000, verrà stampato solo 1.0, indipendentemente dal numero di punti decimali specificato.
Josh Correia,

142

Sento che l'approccio più semplice è usare la format()funzione.

Per esempio:

a = 13.949999999999999
format(a, '.2f')

13.95

Questo produce un numero float come una stringa arrotondata a due punti decimali.


97

Uso

print"{:.2f}".format(a)

invece di

print"{0:.2f}".format(a)

Perché quest'ultimo può causare errori di output quando si tenta di generare più variabili (vedere i commenti).


2
Questo non ha senso. Le due istruzioni fornite si comportano in modo identico su Python 2.7 e solo la seconda istruzione è valida su Python 2.6. (Nessuna delle due affermazioni è valida in Python 3 o Python <2.6.) La prima forma non ha alcun vantaggio oltre alla brevità.
Mark Dickinson,

1
Voglio dire, stampa "{0: .2f} {0: .2f}". Il formato (a, b) porterà a errori nell'output - genererà due volte un valore "a". Mentre stampa "{:. 2f} {: .2f}". Format (a, b) genererà i valori 'a' e 'b'.
Alexey Antonenko,

2
Per Python 3, devi solo aggiungere parentesi quadre (...). E dentro di loro tutto ciò che ho scritto è giusto.
Alexey Antonenko,

"Voglio dire, stampa" {0: .2f} {0: .2f} ". Il formato (a, b) causerà errori nell'output". Ah. Bene, questa è un'affermazione abbastanza diversa! Forse dovresti modificare la tua risposta? (Cosa significa "aumentare l'errore" nella risposta corrente, ad esempio? Puoi fare un esempio di un caso in cui la seconda affermazione solleva un'eccezione ma la prima no?)
Mark Dickinson,

3
Saresti dopo la stampa ("{0: .2f} {1: .2f}". Formato (a, b)) se hai due variabili
Hovo,

95

La maggior parte dei numeri non può essere rappresentata esattamente in float. Se vuoi arrotondare il numero perché è quello che richiede la tua formula matematica o algoritmo, allora vuoi usare round. Se vuoi solo limitare il display a una certa precisione, non usare nemmeno round e formattalo semplicemente come quella stringa. (Se vuoi visualizzarlo con un metodo di arrotondamento alternativo e ci sono tonnellate, allora devi mescolare i due approcci.)

>>> "%.2f" % 3.14159
'3.14'
>>> "%.2f" % 13.9499999
'13.95'

E infine, anche se forse più importante, se vuoi la matematica esatta non vuoi affatto galleggiare. L'esempio usuale riguarda il denaro e l'archiviazione dei "centesimi" come numeri interi.


68

Prova il codice qui sotto:

>>> a = 0.99334
>>> a = int((a * 100) + 0.5) / 100.0 # Adding 0.5 rounds it up
>>> print a
0.99

Ma attenzione, il valore di a è ancora un float impreciso. Dai un'occhiata qui - repl.it/LJs ( fai clic su "Esegui sessione" nella parte superiore della sezione destra).
equilibrio vitale

3
Se segui questo approccio, dovresti aggiungere 0,5 per una rappresentazione più accurata. int (a * 100 + 0,5) / 100,0; L'uso di math.ceil è un'altra opzione.
Arhuaco

3
@ShashankSawant: Beh, per prima cosa, la risposta presentata non si arrotonda, si tronca. Il suggerimento di aggiungere la metà alla fine verrà arrotondato, ma poi non vi è alcun vantaggio nel fare questo semplicemente usando la roundfunzione in primo luogo. D'altra parte, poiché questa soluzione utilizza ancora in virgola mobile, il problema originale dell'OP rimane, anche per la versione "corretta" di questa "soluzione".
John Y

3
-1, questa è solo una reimplementazione non necessaria della roundfunzione (che è stata utilizzata nella domanda).
interjay

4
@interjay che è necessario se round()non funziona come indicato nell'OP.
Pithikos,

57

TLDR;)

Il problema di arrotondamento di input / output è stato risolto definitivamente da Python 2.7.0 e 3.1 .

Un numero arrotondato correttamente può essere convertito in modo reversibile avanti e indietro:
str -> float() -> repr() -> float() ...oppure Decimal -> float -> str -> Decimal
Un tipo decimale non è più necessario per la memorizzazione.


(Naturalmente, può essere necessario arrotondare un risultato di addizione o sottrazione di numeri arrotondati per eliminare gli errori dell'ultimo bit accumulato. Un'aritmetica decimale esplicita può essere ancora utile, ma una conversione in stringa di str() (ovvero arrotondando a 12 cifre valide ) è abbastanza buono di solito se non è richiesta una precisione estrema o un numero estremo di operazioni aritmetiche successive.)

Test infinito :

import random
from decimal import Decimal
for x in iter(random.random, None):           # Verify FOREVER that rounding is fixed :-)
    assert float(repr(x)) == x                # Reversible repr() conversion.
    assert float(Decimal(repr(x))) == x
    assert len(repr(round(x, 10))) <= 12      # Smart decimal places in repr() after round.
    if x >= 0.1:                              # Implicit rounding to 12 significant digits
        assert str(x) == repr(round(x, 12))   # by str() is good enough for small errors.
        y = 1000 * x                             # Decimal type is excessive for shopping
        assert str(y) == repr(round(y, 12 - 3))  # in a supermaket with Python 2.7+ :-)

Documentazione

Vedi le note di rilascio Python 2.7 - Altre modifiche alla lingua il quarto paragrafo:

Le conversioni tra numeri in virgola mobile e stringhe sono ora arrotondate correttamente sulla maggior parte delle piattaforme. Queste conversioni si verificano in molti luoghi diversi: str () su float e numeri complessi; il galleggiante e costruttori complessi; formattazione numerica; serializzare e deserializzare float e numeri complessi usando ilmarshal , pickleejson moduli; analisi di float e letterali immaginari in codice Python; e conversione da decimale a virgola mobile.

A questo proposito, il repr () di un numero a virgola mobile x ora restituisce un risultato basato sulla stringa decimale più corta che è garantita per arrotondare a x con arrotondamento corretto (con la modalità di arrotondamento da metà arrotondata a uniforme). In precedenza forniva una stringa basata sull'arrotondamento da x a 17 cifre decimali.

Il problema correlato


Ulteriori informazioni: La formattazione di floatPython 2.7 precedente era simile all'attuale numpy.float64. Entrambi i tipi usano la stessa doppia precisione IEEE 754 a 64 bit con mantissa a 52 bit. Una grande differenza è che np.float64.__repr__viene formattato frequentemente con un numero decimale eccessivo in modo da non perdere alcun bit, ma non esiste un numero IEEE 754 valido compreso tra 13.949999999999999 e 13.95000000000000001. Il risultato non è buono e la conversione repr(float(number_as_string))non è reversibile con numpy. D'altro canto:float.__repr__è formattato in modo che ogni cifra sia importante; la sequenza è senza lacune e la conversione è reversibile. Semplicemente: se hai forse un numero numpy.float64, convertilo in un normale float per essere formattato per gli umani, non per processori numerici, altrimenti con Python 2.7+ non è necessario altro.


Perché downvoted? La domanda riguardava Python float(doppia precisione) e normale round, non numpy.double e la sua conversione in stringa. L'arrotondamento di Python semplice non può davvero essere fatto meglio di Python 2.7. La maggior parte delle risposte è stata scritta prima della 2.7, ma sono obsolete, sebbene in origine fossero molto buone. Questa è la ragione della mia risposta.
hynekcer,

53 bit quando si include il "bit nascosto", che è implicitamente 1, tranne durante il "underflow graduale".
Rick James,

Non è colpa di round, è l'errore di visualizzazione.
Rick James,

Sì, è ben noto. Mi manca tuttavia un contesto se ti opponi a qualcosa nelle note di rilascio di Python 2.7 o nel mio testo o a nulla. È più complicato di quanto fosse necessario lo scopo di questa domanda. Va aggiunto che anche la conversione da stringa a float è stata corretta in Python 2.7 a causa del bug di arrotondamento su alcuni chip Intel a 32 bit e che "Anche la funzione round () è ora correttamente arrotondata". ( Note sulla versione - Funzionalità 3.1 portate a 2.7 ). Sei d'accordo?
Hynekcer,

1
Spiacenti, questo era a*bcontro b*a. Grazie per i link - Nostalgia.
Rick James,

52

Con Python <3 (ad es. 2.6 o 2.7), ci sono due modi per farlo.

# Option one 
older_method_string = "%.9f" % numvar

# Option two (note ':' before the '.9f')
newer_method_string = "{:.9f}".format(numvar)

Tuttavia, per le versioni Python precedenti alla 3 (ad es. 3.2 o 3.3), si preferisce l' opzione due .

Per ulteriori informazioni sull'opzione due, suggerisco questo link sulla formattazione delle stringhe dalla documentazione di Python .

E per ulteriori informazioni sull'opzione 1, questo collegamento è sufficiente e contiene informazioni sui vari flag .

Riferimento: converte il numero in virgola mobile in una certa precisione, quindi copia in stringa


Come si rappresenta un numero intero? Se utilizzo "{i3}". Format (numvar), visualizzo un errore.
skytux,

Questo è ciò che intendo: se numvar=12.456, allora "{:.2f}".format(numvar)cede 12.46ma "{:2i}".format(numvar)dà un errore e mi aspetto 12.
skytux,

50

È possibile modificare il formato di output:

>>> a = 13.95
>>> a
13.949999999999999
>>> print "%.2f" % a
13.95

47

Nessuno qui sembra averlo ancora menzionato, quindi lasciatemi fare un esempio nel formato f-string / template-string di Python 3.6, che penso sia meravigliosamente pulito:

>>> f'{a:.2f}'

Funziona bene anche con esempi più lunghi, con operatori e senza bisogno di parentesi:

>>> print(f'Completed in {time.time() - start:.2f}s')

39

È possibile utilizzare l' operatore formato per arrotondare il valore fino a 2 posizioni decimali in Python:

print(format(14.4499923, '.2f')) // output is 14.45

4
Questo restituisce una stringa
Jemshit Iskenderov del

29

In Python 2.7:

a = 13.949999999999999
output = float("%0.2f"%a)
print output

1
Questo non aiuta affatto. outputha lo stesso identico valore di a, quindi potresti anche aver scritto print ainvece che print outputnell'ultima riga.
Mark Dickinson,

@MarkDickinson La prego di riprovare. Perché sta funzionando come previsto nel mio compilatore.
Shashank Singh,

1
Ti manca il punto. Sì, il tuo codice viene stampato 13.95. Ma lo stesso vale print a, per questo particolare valore di a, in Python 2.7, quindi non è davvero chiaro quale fosse il punto del passaggio di formattazione.
Mark Dickinson,

@MarkDickinson Ho modificato il codice. Sono d'accordo che 'stampa a' stampa lo stesso valore di "stampa output". Ma se si confronta "a == output", il risultato sarà "Falso" poiché il passaggio di formattazione completa il valore mobile "a" con due punti decimali.
Shashank Singh,

1
Hai effettivamente provato a == outputil codice che mostri? Dà Trueper me, e sospetto che lo faccia anche per te.
Mark Dickinson,

22

Il tutorial di Python ha un'appendice chiamata Aritmetica in virgola mobile: problemi e limitazioni . Leggilo. Spiega cosa sta succedendo e perché Python sta facendo del suo meglio. Ha anche un esempio che corrisponde al tuo. Vorrei citare un po ':

>>> 0.1
0.10000000000000001

potresti essere tentato di utilizzare la round() funzione per ridurla alla singola cifra che ti aspetti. Ma questo non fa differenza:

>>> round(0.1, 1)
0.10000000000000001

Il problema è che il valore binario a virgola mobile memorizzato per “0.1” era già la migliore approssimazione possibile a1/10 , quindi provare a arrotondarlo di nuovo non può renderlo migliore: era già buono come può.

Un'altra conseguenza è che poiché 0.1 non è esattamente 1/10, sommando dieci valori di 0.1potrebbe non produrre esattamente 1.0, neanche:

>>> sum = 0.0
>>> for i in range(10):
...     sum += 0.1
...
>>> sum
0.99999999999999989

Un'alternativa e una soluzione ai tuoi problemi sarebbe usare il decimalmodulo.


18

Come sottolineato da @Matt, Python 3.6 fornisce stringhe f e possono anche usare parametri nidificati :

value = 2.34558
precision = 2
width = 4

print(f'result: {value:{width}.{precision}f}')

che verrà visualizzato result: 2.35



11

Utilizzare la combinazione di oggetto decimale e metodo round ().

Python 3.7.3
>>> from decimal import Decimal
>>> d1 = Decimal (13.949999999999999) # define a Decimal
>>> d1 
Decimal('13.949999999999999289457264239899814128875732421875')
>>> d2 = round(d1, 2) # round to 2 decimals
>>> d2
Decimal('13.95')

7

Per fissare il virgola mobile in linguaggi di tipo dinamico come Python e JavaScript, utilizzo questa tecnica

# For example:
a = 70000
b = 0.14
c = a * b

print c # Prints 980.0000000002
# Try to fix
c = int(c * 10000)/100000
print c # Prints 980

Puoi anche usare Decimale come segue:

from decimal import *
getcontext().prec = 6
Decimal(1) / Decimal(7)
# Results in 6 precision -> Decimal('0.142857')

getcontext().prec = 28
Decimal(1) / Decimal(7)
# Results in 28 precision -> Decimal('0.1428571428571428571428571429')

1
getcontext().prec = 6funziona solo nell'ambito della funzione o in tutti i luoghi?
Julio Marins,

1
I contesti sono ambienti per operazioni aritmetiche. Governano la precisione, stabiliscono le regole per l'arrotondamento, determinano quali segnali vengono trattati come eccezioni e limitano l'intervallo per gli esponenti. Ogni thread ha il suo contesto attuale @JulioMarins
Siamand

7
from decimal import Decimal


def round_float(v, ndigits=2, rt_str=False):
    d = Decimal(v)
    v_str = ("{0:.%sf}" % ndigits).format(round(d, ndigits))
    if rt_str:
        return v_str
    return Decimal(v_str)

risultati:

Python 3.6.1 (default, Dec 11 2018, 17:41:10)
>>> round_float(3.1415926)
Decimal('3.14')
>>> round_float(3.1445926)
Decimal('3.14')
>>> round_float(3.1455926)
Decimal('3.15')
>>> round_float(3.1455926, rt_str=True)
'3.15'
>>> str(round_float(3.1455926))
'3.15'

6
orig_float = 232569 / 16000.0

14.5355625

short_float = float("{:.2f}".format(orig_float)) 

14.54


5

Che dire di una funzione lambda come questa:

arred = lambda x,n : x*(10**n)//1/(10**n)

In questo modo potresti semplicemente fare:

arred(3.141591657,2)

e prendi

3.14

4

È semplice come 1,2,3:

  1. usa il decimale modulo per un'aritmetica decimale a virgola mobile rapidamente arrotondata correttamente:

    d = decimale (10000000.0000009)

per arrotondare:

   d.quantize(Decimal('0.01'))

risulterà con Decimal('10000000.00')

  1. fare sopra A SECCO:
    def round_decimal(number, exponent='0.01'):
        decimal_value = Decimal(number)
        return decimal_value.quantize(Decimal(exponent))

O

    def round_decimal(number, decimal_places=2):
        decimal_value = Decimal(number)
        return decimal_value.quantize(Decimal(10) ** -decimal_places)
  1. vota questa risposta :)

PS: critica degli altri: la formattazione non è arrotondata.


2

Per arrotondare un numero a una risoluzione, il modo migliore è il seguente, che può funzionare con qualsiasi risoluzione (0,01 per due decimali o anche altri passaggi):

>>> import numpy as np
>>> value = 13.949999999999999
>>> resolution = 0.01
>>> newValue = int(np.round(value/resolution))*resolution
>>> print newValue
13.95

>>> resolution = 0.5
>>> newValue = int(np.round(value/resolution))*resolution
>>> print newValue
14.0

non funziona per me su Python 3.4.3 e numpy 1.9.1? >>> import numpy as np >>> res = 0.01 >>> value = 0.184 >>> np.round (value / res) * res 0.17999999999999999
szeitlin

1
In cerca di documentazione, vedo che il problema deriva numpy.rounddall'accuratezza / precisione. Quindi richiede di definirlo come int prima della moltiplicazione con risoluzione. Ho aggiornato il codice. Grazie per questo!
iblasi,

L'unico necessario è convertire il numpy.float64risultato di np.round in floato semplicemente usarlo round(value, 2). Non esiste un numero IEEE 754 valido compreso tra 13.949999999999999 (= 1395 / 100.) e 3.950000000000001 (= 1395 * .01). Perché pensi che il tuo metodo sia il migliore? Il valore originale 13.949999999999999289 (= valore = rotondo (valore, 2)) è ancora più esatto del tuo 13.9500000000000000178 (stampato da np.float96). Ulteriori informazioni anche per numpy sono ora aggiunte alla mia risposta che probabilmente hai effettuato il downvoting per errore. All'inizio non si trattava di intorpidimento.
hynekcer,

@hynekcer Non penso che la mia risposta sia la migliore. Volevo solo aggiungere un esempio di limite float a n decimali ma il più vicino di una risoluzione definita. Ho controllato come hai detto, che al posto inttuo puoi usare anche floatper l'esempio @szeitlin. Grazie per il tuo commento extra. (Scusate ma non vi ho
votato per il downgrade

L'aggiunta di una dipendenza completamente nuova per l'elaborazione numerica (panda) è il "modo migliore"?
Hejazzman,

1

lambda x, n: int (x * 10 n + .5) / 10 n ha lavorato per me per molti anni in molte lingue.


-13

Il metodo che uso è quello del taglio delle stringhe. È relativamente veloce e semplice.

Innanzitutto, converti il ​​float in una stringa, quindi scegli la lunghezza che desideri che sia.

float = str(float)[:5]

Nella singola riga sopra, abbiamo convertito il valore in una stringa, quindi abbiamo mantenuto la stringa solo nelle sue prime quattro cifre o caratteri (inclusi).

Spero che aiuti!


2
Si prega di non pubblicare risposte identiche a più domande.
vaultah,

18
WOW ... tdh ... Ti preghiamo di non creare software di contabilità ... Cosa succede se il numero è 113,94 ?? questo comporterebbe 113,9 ... lasciando 0,04 mancanti .... Anche questo ha già le risposte di oltre 5 anni fa ....
Angry 84
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.