Показать сообщение отдельно
Старый 23.01.2007, 02:44   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Математика в Blitz3D

Тест на С++ показал, что проблема в типе переменной. Корректно начинает работать с 8-байтовыми (double)
#include<iostream.h>
#include<conio.h>

template<class abstr>
void calc(abstr formal)
{	
	cout<<"===\n";
	cout<<"for "<<sizeof(formal)<<" bytes"<<endl;
	abstr intervalx[20];
	abstr temp0,temp1,temp2,b;
	short tempc;
	abstr x=14.143;
	abstr xmax=15.051;
	abstr h=0.242;
	temp0=13.417;
	tempc=1;
	while(temp0<=xmax){
		temp2=temp0+h;
		intervalx[tempc]=temp2;
		temp0=temp2;
		tempc++;
	}

	b=intervalx[3];

	if(x==b)
		cout<<x<<"="<<b<<endl;
	else
		cout<<x<<"!="<<b<<endl;
	cout<<"===\n";
	
}

void main()
{
	float x1;
	double x2;
	calc(x1);
	calc(x2);
	cout<<endl;
	getch();
}
===
for 4 bytes
14.143!=14.143
===
===
for 8 bytes
14.143=14.143
===
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием