gpt4 book ai didi

c - 如何在C中对文本中的 float 进行四舍五入?

转载 作者:行者123 更新时间:2023-11-30 18:29:12 24 4
gpt4 key购买 nike

所以我有这段文字

today average human lifespan in Western countries is approaching and exceeding 80 years.
1 Japan 82.6 123 19
2 Hong Kong 82.2 234 411
3 Iceland 81.8 345 26
4 Switzerland 81.7 456 7
5 Australia 81.2 567 500
...
80 Lithuania 73.0 800 2
...
194 Swaziland 39.6 142 212
195 133714 18.0 133 998
196 100110011 10.0 667 87351

我需要将本文中的 float 四舍五入为整数。我搜索了很多论坛,但似乎找不到我需要的东西。该文本在 .txt 文件中给出。我的任务:“将实数(有小数)四舍五入为整数。更正后的文本应该位于新的 .txt 中”就是这样。

最佳答案

scanfsscanf 是提取字符串中任何内容的最佳 friend 。
floor 使用 full 来抑制浮点上的小数。然后可以用来对其进行舍入(使用它包括 math.h)...

格式字符串描述了预期的格式。函数返回找到的参数数量。

示例:

  • 初始化

    int id = -1;
    char country[160]; /* /!\ Warning country name length shall be fewer than 160 */
    /* Scanf don't care of this array parameter length. If it is too short */
    /* It will erase following memory... */
    /* That is why scanf are often disparaging */
    float percent = 0.0;
    char a_number_as_string[10];
    int other_number = -1;
    char* Switzerland = "4 Switzerland 81.7654321 456 7";
  • 效果代码

     int ret = sscanf(Switzerland, "%d %s %f %s %d", &id, country, 
    &percent, a_number_as_string, &other_number);
    if(ret == 5) {
    printf("~~ id: %d\n\tcountry: %s\n\tpercent: %.2f\n\tand : "
    "(%s, %d)\n", id, country, percent, a_number_as_string,
    other_number);

    /////// ROUND
    printf("*** round");
    printf("\twith printf %%.1f = %.1f\n", percent);
    printf("\twith printf %%.2f = %.2f\n", percent);
    printf("\twith printf %%.3f = %.3f\n", percent);
    printf("\twith printf %%.4f = %.4f\n", percent);

    printf("*** With floor (included in math.h)\n");
    printf("\t1 decimal: %f\n", floor(percent*10)/10);
    printf("\t2 decimal: %f\n", floor(percent*100)/100);
    printf("\t3 decimal: %f\n", floor(percent*1000)/1000);
    printf("\t4 decimal: %f\n", floor(percent*10000)/10000);
    } else {
    printf("--> ret = %d", ret);
    }
  • 输出

    ~~ id: 4

    country: Switzerland
    percent: 81.70
    and : (456, 7)

    *** 圆形

    with printf %.1f = 81.8
    with printf %.2f = 81.77
    with printf %.3f = 81.765
    with printf %.4f = 81.7654

    *** 有底线(包含在 math.h 中)

    1 decimal: 81.700000
    2 decimal: 81.760000
    3 decimal: 81.765000
    4 decimal: 81.765400

此函数在 Unix、OSX、Unix 终端手册页中进行了描述:

  • man scanf
  • man sscanf
  • 男人楼层

或者您可以在网络上管理此管理器的多个副本中找到它,例如

关于c - 如何在C中对文本中的 float 进行四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40317323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com