为了账号安全,请及时绑定邮箱和手机立即绑定

为什么划分两个整数不会浮动?

为什么划分两个整数不会浮动?

C
慕姐8265434 2019-08-14 15:34:53
为什么划分两个整数不会浮动?任何人都可以解释为什么当我将它除以整数时b会在这里被舍入,尽管它是一个浮点数?#include <stdio.h>void main() {     int a;     float b, c, d;     a = 750;     b = a / 350;     c = 750;     d = c / 350;     printf("%.2f %.2f", b, d);     // output: 2.00 2.14}http://codepad.org/j1pckw0y
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

这是因为隐式转换。变量b, c, d属于float类型。但是/运算符看到它必须除以两个整数,因此在结果中返回一个整数,该整数float通过添加小数点隐式转换为a 。如果你想要浮点除法,请尝试将两个操作数设置为/浮点数。如下。

#include <stdio.h>int main() {
    int a;
    float b, c, d;
    a = 750;
    b = a / 350.0f;
    c = 750;
    d = c / 350;
    printf("%.2f %.2f", b, d);
    // output: 2.14 2.14
    return 0;}


查看完整回答
反对 回复 2019-08-14
?
呼唤远方

TA贡献1856条经验 获得超11个赞

使用类型的铸件

int main() {
    int a;
    float b, c, d;
    a = 750;
    b = a / (float)350;
    c = 750;
    d = c / (float)350;
    printf("%.2f %.2f", b, d);
    // output: 2.14 2.14}

这是解决这个问题的另一种方法:

 int main() {
        int a;
        float b, c, d;
        a = 750;
        b = a / 350.0; //if you use 'a / 350' here, 
                       //then it is a division of integers, 
                       //so the result will be an integer
        c = 750;
        d = c / 350;
        printf("%.2f %.2f", b, d);
        // output: 2.14 2.14
    }

但是,在这两种情况下,您都


查看完整回答
反对 回复 2019-08-14
?
慕的地10843

TA贡献1785条经验 获得超8个赞

具体来说,这不会使您的结果四舍五入,而是向零截断。因此,如果你除了-3/2,你将获得-1而不是-2。欢迎来到积分数学!在CPU可以进行浮点运算或数学协处理器的出现之前,我们用积分数学做了所有事情。尽管存在用于浮点数学的库,但它们对于通用目的而言太昂贵(在CPU指令中),因此我们对于数字的整个部分使用16位值而对于该分数使用另外16个值。

编辑:我的回答让我想起了经典的老人说“当我年纪的时候......”


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信