تو کد اول وقتی اینو مینویسید :
t=1/((x*x)+x+3);
میاد میبینه x از نوعه int هست یعنی مخرج صحیحه
صورت هم که صحیحه ( 1 از نوع int محسوب میشه)
پس وقتی تقسیم میکنه جزء صحیحشو بهتون تحویل میده.
اگه اینجوری بنویسین درست میگیره :
t=1.0f/((x*x)+x+3);
یا اینجوری :
t=(float)1/((x*x)+x+3);