[zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- From: "Enrico Maria Giordano" <e.m.giordano@xxxxxxxxxxxxxxx>
- To: <zxspectrum@xxxxxxxxxxxxx>
- Date: Tue, 18 Oct 2005 18:35:37 +0200
-----Messaggio Originale-----
Da: "Marcello Zaniboni" <marcello.zaniboni@xxxxxxxxx>
A: <zxspectrum@xxxxxxxxxxxxx>
Data invio: martedì 18 ottobre 2005 18.23
Oggetto: [zxspectrum] z88dk e artirmetica floating point... ho trovato
un'anomalia?
Ciao a tutti
In previsione degli ultimi ritocchi al giochino AITTT, nel tempo perso
sto provando un po' a giocare con z88dk. Ho trovato però qualcosa di
strano: se compilo il seguente programmino
/*-------------------------------------------*/
#include <stdio.h>
#define MOVE_MEMORY 150
unsigned int a_part = 40;
int main(void) {
float perc =
(((float) a_part) / ((float) MOVE_MEMORY)) * 100.;
printf("%f", perc);
return 0;
}
/*-------------------------------------------*/
...innanzitutto, perché ottengo un minaccioso warning?
(sccz80:"test_fp.c" L:10 Warning:#27:Int constant in double
expression) Ho anche castato a float... che cosa c'è di male?
L'unica cosa che vedo io è che stai assegnando un double (il risultato
dell'operazione) ad un float con possibile perdita di precisione.
E poi, sebbene la compilazione non fallisca, ottengo un output che non
mi spiego:
100.000000
(Il compilatore MingW, che è un GCC per Win32, ce la fa benissimo e mi
stampa 26.666666)
Un tentativo: prova a mettere "100.0" invece che "100.". Magari al compilatore
è indigesta quella notazione.
EMG
--
EMAG Software Homepage: http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg
The EMG Music page: http://www.emagsoftware.it/emgmusic
- Follow-Ups:
- [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- From: Marcello Zaniboni
- References:
- [zxspectrum] z88dk e artirmetica floating point... ho trovato un'anomalia?
- From: Marcello Zaniboni
Other related posts:
- » [zxspectrum] z88dk e artirmetica floating point... ho trovato un'anomalia?
- » [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- » [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- » [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- » [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- » [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
Ciao a tutti In previsione degli ultimi ritocchi al giochino AITTT, nel tempo perso sto provando un po' a giocare con z88dk. Ho trovato però qualcosa di strano: se compilo il seguente programmino
/*-------------------------------------------*/
#include <stdio.h> #define MOVE_MEMORY 150
unsigned int a_part = 40;
int main(void) {
float perc =
(((float) a_part) / ((float) MOVE_MEMORY)) * 100.;
printf("%f", perc);
return 0;
}/*-------------------------------------------*/
...innanzitutto, perché ottengo un minaccioso warning? (sccz80:"test_fp.c" L:10 Warning:#27:Int constant in double expression) Ho anche castato a float... che cosa c'è di male?
E poi, sebbene la compilazione non fallisca, ottengo un output che non mi spiego: 100.000000 (Il compilatore MingW, che è un GCC per Win32, ce la fa benissimo e mi stampa 26.666666)
- [zxspectrum] Re: z88dk e artirmetica floating point... ho trovato un'anomalia?
- From: Marcello Zaniboni
- [zxspectrum] z88dk e artirmetica floating point... ho trovato un'anomalia?
- From: Marcello Zaniboni