无法解决浮点异常

标签 c floating-point cs50

我正在尝试完成哈佛大学的 CS50x 问题集 1,但我的程序中遇到了某种错误。它向我抛出浮点异常错误;我对此进行了相当多的研究,这似乎主要是当您尝试除以零时引起的。现在,当我查看代码时,我似乎找不到一个变量甚至等于零的地方,更不用说除以零了。

#include <stdio.h>
#include <cs50.h>

int changeF(change, div)
{
    int c = change/div;
    return c;
}

int main(void)
{
    printf("Enter the bill amount:");
    float bill = GetFloat();
    printf("Enter the payment amount:");
    float payment = GetFloat();
    float q = .25; float di = .1; float n = .05; float p = .01;
    float change = payment - bill;
    do
    {
        if (bill >= 0 && payment >= 0 && change >= 0)
        {
            if (change >= q)
            {
                float quarters = changeF(change, q);
                printf("%f quarters", quarters);
                change = change - (.25*quarters);
            }
            if (change >= di)
            {
                float dimes = changeF(change, di);
                printf("%f dimes", dimes);
                change = change - (.1*dimes);
            }
            if (change >= n)
            {   
                float nickels = changeF(change, n);
                printf("%f nickels", nickels);
                change = change - (.05*nickels);
            }
            if (change >= p)
            {
                float pennies = changeF(change, p);
                printf("%f pennies", pennies);
                change = change - (.01*pennies);
            }
        }
    }
    while (change > 0);
}

最佳答案

您需要为函数参数指定类型:

 changeF(float change, float div)

我不确定您是否真的希望该函数的返回值是 int 还是 float!

关于无法解决浮点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007897/

相关文章:

c - 在 Linux 上分配期间如何记录堆栈?

c - 调试fopen和fclose,打开文件太多

c - 我如何将字符串(由用户输入)与文件中一行的第一个单词进行比较?

c - 如何根据用户给出的数字打印包含文本的金字塔?

c - 为什么我收到错误 "use of undeclared identifier?"

C 重复字符,一个字符一个字符

c - 浮点值 - 基础知识

c++ - C 和 C++ 中双浮点值的表示法

C# 浮点精度

c - 对 `__ubsan_handle_nonnull_arg' 的 undefined reference