鱼C论坛

 找回密码
 立即注册
查看: 2796|回复: 10

整数相除,可否规定输出类型为小数?如可以,该引用什么头文件?

[复制链接]
发表于 2017-10-29 14:01:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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太麻烦了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-29 14:05:18 | 显示全部楼层
printf("%f", 1/i);
就这样,输入类型用浮点型就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-29 14:24:32 | 显示全部楼层
丶忘却的年少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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 14:32:01 | 显示全部楼层
嗯,忘记强制了。不然结果还是整型,在强制转换,会损失很大
printf("%f", (float)1 / i);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 22:39:55 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-29 14:32
嗯,忘记强制了。不然结果还是整型,在强制转换,会损失很大
printf("%f", (float)1 / i);


printf("%f", 1f / i); 强转会丢失精度的好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 22:46:36 | 显示全部楼层
hacker.jin 发表于 2017-10-29 22:39
printf("%f", 1f / i); 强转会丢失精度的好吧

嗯,是会的。不过我想不出别的了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 09:45:04 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-29 22:46
嗯,是会的。不过我想不出别的了

在字面量后面加个f 或者printf(“%f”,1/((float)i))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 10:50:36 | 显示全部楼层
hacker.jin 发表于 2017-10-30 09:45
在字面量后面加个f 或者printf(“%f”,1/((float)i))

把1强制转换也可以吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 21:24:23 | 显示全部楼层
嫌麻烦就定义一个 double类自变量  double不能转float   
要输出float 就全部定义成float  后面加个F  0.001F  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 23:40:57 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-30 10:50
把1强制转换也可以吧?


1不需要强制转换,  1是字面量,改成1f就好了,1.0f也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-13 20:28:33 | 显示全部楼层
Hermione 发表于 2017-10-29 14:24
不行呀,
#include
int main()

是1.0/i呢
因为强制类型转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 20:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表