整数相除,可否规定输出类型为小数?如可以,该引用什么头文件?
本帖最后由 Hermione 于 2017-10-29 14:25 编辑int i, 1 / i希望得到小数,并且不希望用1 * 1.0 / i或者1.0 / i这种方法,可不可以用(float)规定输出类型?如果可以,是否需要什么头文件呢?
我是因为求PI近似值想到这个问题的。
#include <stdio.h>
#include <math.h>
int main()
{
double sum;
double stan = pow(10, -8);
for(int i = 1; 1 * 1.0 / i >= stan; i += 2)
{
if (i % 4 == 1)
{
sum = sum + 1 * 1.0 / i;
continue;
}
else
{
sum = sum - 1 * 1.0 / i;
}
}
printf("PI的近似值为%f", 4 * sum);
return 0;
}
觉得一遍遍用*1.0太麻烦了。 printf("%f", 1/i);
就这样,输入类型用浮点型就可以了 丶忘却的年少o 发表于 2017-10-29 14:05
printf("%f", 1/i);
就这样,输入类型用浮点型就可以了
不行呀,
#include <stdio.h>
int main()
{
int i = 3;
printf("%f", 1 / i);
return 0;
}
但是,输出为0.000000 嗯,忘记强制了。不然结果还是整型,在强制转换,会损失很大
printf("%f", (float)1 / i); 丶忘却的年少o 发表于 2017-10-29 14:32
嗯,忘记强制了。不然结果还是整型,在强制转换,会损失很大
printf("%f", (float)1 / i);
printf("%f", 1f / i); 强转会丢失精度的好吧 hacker.jin 发表于 2017-10-29 22:39
printf("%f", 1f / i); 强转会丢失精度的好吧
嗯,是会的。不过我想不出别的了{:10_278:} 丶忘却的年少o 发表于 2017-10-29 22:46
嗯,是会的。不过我想不出别的了
在字面量后面加个f 或者printf(“%f”,1/((float)i)) hacker.jin 发表于 2017-10-30 09:45
在字面量后面加个f 或者printf(“%f”,1/((float)i))
把1强制转换也可以吧? 嫌麻烦就定义一个 double类自变量double不能转float
要输出float 就全部定义成float后面加个F0.001F 丶忘却的年少o 发表于 2017-10-30 10:50
把1强制转换也可以吧?
1不需要强制转换,1是字面量,改成1f就好了,1.0f也可以 Hermione 发表于 2017-10-29 14:24
不行呀,
#include
int main()
是1.0/i呢
因为强制类型转换
页:
[1]