gpt4 book ai didi

c - 如何删除无符号整数中的 2 位数字?

转载 作者:行者123 更新时间:2023-11-30 14:29:06 25 4
gpt4 key购买 nike

所以我有一个 1.40 数字,我想删除 1.,这样我就可以将 40 转换为二进制数字。如何只删除 2 位数字?

最佳答案

做你想做的事的唯一明智的方法是:

double x = 1.40;
int i;
snprintf(buf, sizeof buf, "%.2f", x);
i = atoi(buf+2);

这看起来丑陋且效率极低,但其他方法的问题是二进制浮点中不存在 1.40。相反,1.40 计算为最接近的现有浮点值,该值可能略小于或略大于 1.40。如果更少,像 (int)(x*100) 这样的东西会给你 139 而不是 140。

使用 snprintf 至少可以确保在计算值时使用与显示值相同的语义。

当然,你正在做的事情一开始可能没有意义。 1.40 是美元和美分(或类似的其他货币)吗?如果是这样,您应该一开始就存储整数美分。 float 不应该永远用于货币。

关于c - 如何删除无符号整数中的 2 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5229094/

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