In C++,Come posso aggirare il fatto che in C++, sin (M_PI) non è 0?
const double Pi = 3.14159265;
cout << sin(Pi); // displays: 3.58979e-009
dovrebbe visualizzare il numero zero
comprendo questo è perché Pi viene approssimato, ma non v'è alcun modo per avere un valore di Pi insita nel mio programma che verrà restituisce 0 per sin (Pi)? (una costante diversa forse?)
Nel caso ti stia chiedendo cosa sto cercando di fare: sto convertendo polare in rettangolare, e mentre ci sono alcuni trucchi di printf() che posso fare per stamparlo come " 0.00" , ancora non in modo coerente restituisce i valori decenti (in alcuni casi ho "-0.00")
Le linee che richiedono il peccato e coseno sono:
x = r*sin(theta);
y = r*cos(theta);
BTW: Il mio Rettangolare -> Polar sta funzionando bene ... è solo il Polar -> Rettangolare
Grazie!
edit: Sto cercando una soluzione in modo che possa stampare il peccato (un multiplo di Pi) come un bel numero tondo alla console (idealmente senza un migliaio di dichiarazioni if-)
3.58979e-009 è molto vicino allo zero. Questo perché il Pi che stai usando è anche un valore "approssimativo" di Pi. – Akanksh
sì, so perché lo sta facendo (l'ho detto nel post) ... Sto cercando una soluzione alternativa – Adam
[Ciò che ogni scienziato informatico dovrebbe sapere sull'aritmetica a virgola mobile] (http://docs.sun.com /source/806-3568/ncg_goldberg.html) –