OK. Adesso il listato è questo: /*-------------------------------------------*/ #include <stdio.h> #define MOVE_MEMORY 150 unsigned int a_part = 40; int main(void) { double perc = ( double ) a_part / MOVE_MEMORY * 100; printf("%f", perc); return 0; } /*-------------------------------------------*/ Con questo nuovo listato l'output è finalmente corretto (26.666667), ma i warning ora sono due: sccz80:"test_fp2.c" L:10 Warning:#27:Int constant in double expression sccz80:"test_fp2.c" L:10 Warning:#27:Int constant in double expression La linea 10 è proprio quella del calcolo in floating point. ...comunque va già meglio: almeno adesso il calcolo lo fa; anche se è un po' desolante 1) non capire perché prima non funzionava e avere 2) avere dei warning in compilazione Per la cronaca: attualmente compilo con z88dk, ultima release stabile (quella per cui ho fatto l'installer) utilizzando questo comando: zcc +zx -O3 -zorg=25000 -create-app -vn -lndos -lm -o test_fp2 test_fp2.c Ciao, Marcello