gpt4 book ai didi

c - 了解类型转换

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:17 25 4
gpt4 key购买 nike

我制作了一个非常简单的程序,用于向用户分发零钱(25 美分、10 美分、5 美分和便士)。它分配回与用户输入现金相同的数量、值(value)和变化。在我输入之前它表现良好:0.59因此,在稍微修改程序之后,我能够解决这个问题。但是,我仍然不明白我到底做了什么来修复它......

int change_owed( float ){

int change, coins;
change = coins = 0;

change = (float)(amount * 1000000.0);
change /= 10000;

任何解释都会很棒。另外,如果这个问题已经被问到,我深表歉意。在搜索stackoverflow时,我找不到解决方案。

最佳答案

问题是0.01没有精确表示为 float ,所以计算变化时会出现舍入误差。理想的解决方案是完全避免使用 float 。请改用定点算法。

例如,您可以使用整数值 345,而不是像 3.45 这样的 float 来表示三美元四十五美分。这种类型的表示被称为定点,因为在倒数第二个数字之前有一个假定的小数点。

以下示例程序展示了一种将美元金额(如 3.45)读取为定点数的方法。

int main( void )
{
int dollars, cents, count, amount;

printf( "Enter amount: " );
fflush( stdout );
count = scanf( "%d.%d", &dollars, &cents );

if ( count == 1 )
amount = dollars * 100;
else if ( count == 2 && cents < 100 )
amount = dollars * 100 + cents;
else
amount = 0;

printf( "%d\n", amount );
}

关于c - 了解类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29133843/

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