gpt4 book ai didi

c - 在此代码中,为什么我仅针对输入值 4.2 得到错误输出,而其他值却运行良好?

转载 作者:行者123 更新时间:2023-12-04 10:41:23 25 4
gpt4 key购买 nike

以下代码将美元(浮点值)转换为美分(整数值)。这里 1 美元 == 100 美分。除了一个值,即 4.2 之外,该代码可以完美运行。对于 4.2 作为输入,它给出的输出为 419 而不是 420。错误在哪里?

#include <stdio.h>
int main(void)
{
float change;

do
{
printf("O hai! Enter amount in dollars to convert in cents.\n");

scanf("%f",&change); //accepts input in dollars

} while(change < 0.00);

int i = change * 100; //converts dollars into cents

printf("The equivalent cents are %d\n",i);
}

最佳答案

你有这种行为是因为 float 的方式有代表。

IEEE 754 , 4.2实际上存储为 4.19999980926513671875这样当你将它乘以 100并将其投回 int , 你得到 419 (结果的整数部分)。

一个解决方案是使用

int i = (int) roundf(change * 100);

int i = (int) lrintf(change * 100);

#include <math.h> .

关于c - 在此代码中,为什么我仅针对输入值 4.2 得到错误输出,而其他值却运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354255/

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