Forum
>>
Principianti
>>
la funzione round serve ad approssimare?
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da EL DIABLO |
2017-10-02 15:51:56 - la funzione round serve ad approssimare?
|
Ciao a tutti,
quando uso la funzione round, se la cifra successiva è 5 non sempre esegue l'approssimazione in modo esatto. Per esempio: round(3.5) dà 4 round(4.5) dà 4 invece di 5 round(5.5) dà 6 round(6.5) dà 6 invece di 7 e così via round(7.625, 2) dà 7.62 invece di 7.63 Quando la cifra di destra è >= 5 si approssima sempre per eccesso. Mi date una spiegazione per favore? |
|
Scritto da Claudio_F |
2017-10-02 16:15:34 - Re: la funzione round serve ad approssimare?
|
Ah, interessante. Mi accodo alla domanda.
Questo scherzo lo fa solo con py3, mentre in py2 i risultati sono quelli che ci si aspetterebbe. >>> round(6.5) 6 >>> round(6.500000000000001) 7 *** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione *** |
|
Scritto da ㎝ |
2017-10-02 16:19:58 - Re: la funzione round serve ad approssimare?
|
For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2). Inoltre, 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. See Floating Point Arithmetic: Issues and Limitations for more information. Da https://docs.python.org/3/library/functions.html#round. THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da EL DIABLO |
2017-10-02 17:28:18 - Re: la funzione round serve ad approssimare?
|
Grazie, perché in py2 allora i risultati sono quelli che ci si aspetterebbe?
E' per lo stesso motivo che, per esempio: print(tan(pi)) dà come risultato -1.2246467991473532e-16 invece di 0 ? --- Ultima modifica di alexc in data 2017-10-02 17:37:54 --- |
|
Scritto da ㎝ |
2017-10-02 18:09:16 - Re: la funzione round serve ad approssimare?
|
Definisci "quelli che ci si aspetterebbe"
Sempre dalla pagina di documentazione, Python 2.7 implemantava un algoritmo molto più semplice: Values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done away from 0 (so, for example, round(0.5) is 1.0 and round(-0.5) is -1.0). Maggiori info sull'argomento sono in https://en.wikipedia.org/wiki/Rounding#Tie-breaking
Questo è spiegato in https://docs.python.org/3.6/tutorial/floatingpoint.html ㎝ THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da EL DIABLO |
2017-10-02 18:16:26 - Re: la funzione round serve ad approssimare?
|
Gentilissimo, a tutto c'è una spiegazione
|
Pagina: 1
Esegui il login per scrivere una risposta.