|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2006
Città: Torino
Messaggi: 128
|
[C] Divisione semplicissima.
Ragazzi ma 10 / 7 e' 1.428571429, vero?
In C ho fatto questo programma Codice:
#include <stdio.h> int main() { float _number; _number = 10 / 7; printf("%f\n", _number); }
__________________
Blog. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
|
x.xxxxxx
è la formattazione %f in pratica se tu chiami la funzione printf("%f", variabile_float); ti verrà sempre stampato a schermo un numero seguito da 6 cifre decimali Vito EDIT: ops avevo letto male...prova a fare innanzitutto float number; poi metti le parentesi number=(10/7); e vedi che succede...scusami avevo male interpretato il quesito per questo all'inizio la risposta è diversa... P P S ho provato a compilare e mi dà lo stesso errore...ho provato a fare il cast esplicito a float e niente.... se però inserisco 10 e 7 in due variabili float distinte allora il tutto funziona :o
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea! Ultima modifica di mapomapo : 03-04-2007 alle 21:40. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
_number = 10.0 / 7.0; |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
esatto..mettendo le parentesi e basta non ho ben capito cosa sarebbe dovuto cambiare
![]() cmq il modo più elegante e più portabile tra i vari compilatori secondo me è fare il casting esplicito degli interi a float: Codice:
_number = (float)10/(float)7 |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
|
Quote:
(float)(10/7)....ma ovviamente restituisce 1.000000 ![]() VIto
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea! |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ma i due operandi sono interi, pertanto è una divisione intera, non floating-point.
_number = 10.0f / 7; oppure _number = (float) 10 / 7; In entrambi i casi il primo operando diventa float (quindi pure l'altro viene portato a float per eseguire la divisione).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
attenzione però che il casting implicito non sarebbe una bella pratica, visto che è il compilatore e non l'utente che decide se castare l'altro int a float o viceversa introducendo quindi potenziali rischi di portabilità del codice sorgente tra diversi compilatori o tra diverse versioni degli stessi..
|
![]() |
![]() |
![]() |
#10 | ||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Tale espressione ha tipo int, e valore 1, perché il quoziente della divisione di 10 per 7 è 1. Essendo l'operando sinistro di tipo float, il valore int 1 viene convertito nel valore float 1.0. Quote:
Usa il valore 0 per indicare la terminazione corretta.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:16.