涉及float和double

这篇具有很好参考价值的文章主要介绍了涉及float和double。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

涉及float和double的问题:

它们的存储方式:

涉及float和double
它们会分成小数部分和指数部分分别存储。小数部分的有效位数越多,精度就越高,指数部分占位越多,能表示的数值范围越大。

  • 一般float是4个字节,double是8个字节。
  • 一般float的精度比double的大一些。
  • double的数值表示范围远远大于float。
  • 该结论来源于谭浩强《C语言设计》的例子。

有效位?

[来源于百度百科]从一个数的左边第一个非0数字起,到末位数字止,所有的数字都是这个数的有效数字。
涉及float和double
float的有效位数是六位,指的是小数点之后的六位还是包括小数点前的数总共六位?

:float的有效位数指的是小数点后的六位,不包括符号位的数字。

链式结构

定义一个学生结构体,并创建一个链表用于保存一个班级所有学生的基本信息,最后输出所有学生基本信息,以及班级的学生平均成绩。
涉及float和double文章来源地址https://www.toymoban.com/news/detail-470348.html

#include <stdio.h>
#include <stdlib.h>

typedef struct Student
{
    char *name;
    int id;
    unsigned int age;
    char group;
    float score;
    struct Student *next;
} Student, *M_Class;

M_Class init_class()
{
    M_Class head;
    head = (Student *)malloc(sizeof(Student));
    if (!head)
        return NULL;
    head->next = NULL;
    return head;
}

void insert_student(M_Class cls, char *name, int id, unsigned int age, char group, float score)
{
    M_Class p;
    p = (Student *)malloc(sizeof(Student));
    p->name = name, p->id = id, p->age = age, p->group = group, p->score = score;
    p->next = cls->next;
    cls->next = p;
}

void print_class(const M_Class cls)
{
    M_Class prt = NULL;
    float total = 0, average = 0;
    int num_stu = 0;
    printf("=============== 学生基本信息 ===============\n");
    printf("姓名\t学号\t年龄\t小组\t成绩\n");
    printf("--------------------------------------------\n");
    for (prt = cls; prt; prt = prt->next)
    {
        printf("%s\t%d\t%d\t%c\t%.2f\n",
               prt->name, prt->id, prt->age, prt->group, prt->score);
        total += prt->score;
        ++num_stu;
    }
    printf("============================================\n");
    average = total / num_stu;
    printf("班级平均成绩:%.2f", average);
}

int main(int argc, char** argv)
{
    M_Class cls = init_class();
    insert_student(cls, "王五", 1003, 16, 'B', 80.50);
    insert_student(cls, "李四", 1002, 15, 'A', 90.00);
    insert_student(cls, "张三", 1001, 16, 'A', 95.50);

    print_class(cls);

    return 0;
}

到了这里,关于涉及float和double的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言中,float跟double的区别及用法

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万! float和double都是用来表示浮点数的数据类型,但是它们之间有一些区别:        存储大小:float占4个字节(32位),double占8个字节(64位)。        精度:double比float精度

    2024年02月06日
    浏览(44)
  • c语言中啥时候用double啥时候用float?

    一般来说,可以使用double来表示具有更高精度要求的 浮点数 ,因为它可以存储更大范围的数值并且具有更高的精度。 最近很多小伙伴找我,说想要一些c语言资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言专业入门到高级教程+工具包」,点

    2024年02月08日
    浏览(69)
  • 报错:RuntimeError: expected scalar type Double but found Float

    这个问题是深度学习,用pytorch跑的时候出现的 解决办法:这个是格式问题,希望的格式是double,但得到的是float。字面意思是这个,但是并不是非要把格式改成double,这个时候应该在出错的前面几处代码设个断点debug一下,我得到的结果是image、img_rgb都是tensor.unit8格式的,但

    2024年02月13日
    浏览(46)
  • 【已解决】Pytorch RuntimeError: expected scalar type Double but found Float

    本文作者: slience_me 在训练模型时候,将数据集输入到网络中去,在执行卷积nn.conv1d()的时候,报出此错误 报错堆栈信息 tensor的数据类型dtype不正确 这个错误通常是由于数据类型不匹配导致的。在PyTorch中,张量有不同的数据类型,如float32(FloatTensor)和float64(DoubleTensor)等

    2024年01月15日
    浏览(46)
  • loss.backward()处遇到“RuntimeError: Found dtype Double but expected Float”

    类型错误, 计算loss值的函数传入的参数类型不统一。 查看上文loss计算代码部分的参数类型,如loss=f.mse_loss(out,label),检查out和label的类型都是torch.float类型即可。使用label.dtype查看tensor的类型。 报错定位在这一行 寻思着是否是loss类型的问题,于是我就添加 但是还是报错在此

    2024年02月16日
    浏览(45)
  • C语言基本语句(变量类型int、 float、 double、 char,函数scanf、printf、putchar()、getchar() )

    1. int, float, double, char ①整型int(对应%d)  int a,b;  scanf(\\\"%d,%d\\\",a,b); printf (\\\"%d\\\",a); printf(\\\"我今天吃了%d个苹果,在黑板上写下整数%d,这很有趣。\\\",a,b); //printf(\\\"……\\\",变量名)中,“……”部分内容比较自由,可随便发挥,但必须包括%d,几个变量名就对应几个%d ②单精度型浮点数

    2024年02月08日
    浏览(50)
  • 主流架构(gcc、msvc、x86、x64、arm)中double与float浮点数保留精度(末尾清零)

    ​​​​​​ float  是 单精度浮点数 ,内存占4个字节,有效数字8位,表示范围是 -3.40E+38~3.40E+38。 double  是 双精度浮点数 ,内存占8个字节,有效数字16位,表示范是-1.79E+308~-1.79E+308。     C和C++标准没有指定EDCOX1、1、EDCOX1、0和EDCOX1×9的表示。这三个都有可能实现为IEEE双精

    2024年02月08日
    浏览(41)
  • JAVA double精度丢失问题

    0.1*0.1使用计算器计算是0.01,代码里却是0.010000000000000002 为什么会这样呢?这就是精度丢失问题造成的。 因为计算机只能识别0和1,即二进制, 无论哪种编程语言,都需要翻译成二进制才能被计算机识别。 很多人还知道这样一句话: 这种舍入误差的主要原因是浮点数值采用

    2024年02月05日
    浏览(43)
  • Gson int类型被转换成double问题解决(完美解决)

    1.1、BaseResponse类 1.2、不做任何处理,直接用Gson.fromJson解析 1.3、解析结果 1.4、问题 Int类型的\\\"ints\\\"被转换成了double类型、Long类型的\\\"longs\\\"也被转换了 二、解决方案 2.1、旧的(网上千篇一律的复制方案, 其实没有任何卵用 ) 网上千篇一律就是新建TypeAdapter接口的子类,手动转换。

    2024年02月11日
    浏览(51)
  • 日常踩坑:Java中double类型出现科学计数法问题

    背景:在与银行的项目对接中,近期客户反馈支付失败,错误信息是:“付款金额格式有问题”,经过日志分析,发现客户系统发送银行系统时,付款金额以科学计数法的形式传递参数。 重现: 经过测试发现,浮点数(double、float)当整数部分超过7位以上(不含7位),就会

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包