|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 135
|
[c++] risultato double con parametri int
Mi è capitato di sbatter la testa tutta la notte per la seguente formula:
Codice:
//posizione sito 13°22'29";41°45'54" int long_gradi=13.0; int long_primi=22.0; int long_secondi=29.0; int lat_gradi=41.0; int lat_primi=45.0; int lat_sec=54.0; //posizione del sito in rif. inerziale double teta=gst_s+((long_gradi+long_primi/60+long_secondi/3600)*pi/180); Codice:
double long_gradi=13.0; double long_primi=22.0; double long_secondi=29.0; double lat_gradi=41.0; double lat_primi=45.0; double lat_sec=54.0; Lavorare con gli int comporta qualche grossa approssimazione per caso? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi sembra normale, 22 / 60 con gli int fa 0.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 135
|
Ok quindi non importa se il risultato richiesto è espresso in double, cmq sia il prodotto fra int si azzera.
A questo punto conviene sempre utilizzare le double praticamente. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Immaginati gli operatori aritmetici come delle funzioni.
Esistono diverse di funzioni che hanno operandi di tipo identico, quindi int / int, double / double, long / long etc etc La funzione da applicare viene scelta in base al tipo degli operandi, viene scelto il tipo che garantisce la minor perdita di precisione. E' chiaro che se entrambi gli operandi sono interi verrà usato il tipo intero e la divisione fra interi restituirà un intero. Quindi 22 / 60 con una divisione intera fa 0. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:01.



















