previous next Up Title Contents Index

23.2.13 Pyöristys- ja katkaisuvirheet

Seuraava ohjelma voisi tulostaa i = 0:
	
	#include <stdio.h>
	int main(void)
	{
	  float d = 0.0001; int i;
	  i = 10000;
	  i = d*i;
	  printf("i = %4d\n",i);
	  return 0;
	}

Miksikö? Koska reaaliluku 0.0001 voisi sisäisenä esityksenä olla jotakin 0.000099999 ja kun tämä kerrotaan 10000:lla, tulee vähän alle 1 joka kokonaisluvuksi katkaistuna on 0!


previous next Up Title Contents Index