将浮点数转换为双精度整数

法兰哥蒂亚

我必须创建一个项目,该项目包括计算形成一个数字所需的硬币数量。您有夸脱,角钱,镍币和便士,并且您需要形成数量最少的硬币。您需要填写的号码会提示用户。

这在Python中非常简单(我实现了一个函数来快速执行操作):

def calculate_change(change):
    count = 0
    change*=100
    change = int(change)
    if change // 25 != 0:
        count = change // 25
        change = change % 25
    if change // 10 != 0:
        count += change // 10
        change = change % 10
    if change // 5 != 0:
        count += change // 5
        change = change % 5
    if change // 1 != 0:
        count += change // 1

    print count

calculate_change(73)

现在,要在C中实现此功能,我遇到了一些麻烦。我不太了解如何更改用户提示的浮动。我需要先将其转换为两倍,再乘以100,然后转换为int,但是我遇到了麻烦。这是我为此写的:

int main(void)
{
    float n;
    do
    {
        printf("Change you need: ");
        n = GetFloat();
    }
    while (n < 0);

    n = floorf(n * 100 + 0.5) / 100;

    int change = (int) n;
    change = change * 100;
    int count = 0; 

    if (change / 25 != 0)
    {
        count = change / 25;
        change =  change % 25;
    }
    if (change / 10 != 0)
    {
        count = count + change / 10;
        change = change % 10;
    }
    if (change / 5 != 0)
    {   
        count = count + change / 5;
        change = change % 5;
    }
    if (change / 1 != 0)
    {
        count = count + change / 1;
        change = change % 1;
    }

    printf("%d\n", count);

}

从C中的float到int的转换有什么问题吗?当用户提示一个介于0和1之间的数字时,程序返回错误的结果(总是0)。

谢谢 !

萨胡

问题

n = 0.5

floorf(n * 100 + 0.5) / 100 = floorf(50.5)/100 = 50/100 = 0.5

因此,声明

n = floorf(n * 100 + 0.5) / 100;

不会更改的值n现在,当您执行时:

int change = (int) n;

change设置为0这就解释了为什么要获得介于之间的0大多数值n0.0-1.0

我将替换以下行:

n = floorf(n * 100 + 0.5) / 100;

int change = (int) n;
change = change * 100;

n = floorf(n * 100 + 0.5);  // Just to make sure rounding occurs properly.
                            // Thanks to Mark Ransom.
int change = (int) n;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串转换为整数,双精度,浮点数,而不必捕获异常

来自分类Dev

将浮点数转换为整数

来自分类Dev

将整数转换为浮点数

来自分类Dev

在不损失精度的情况下将 NumPy 浮点数转换为整数

来自分类Dev

C ++函数可以采用整数或浮点数或双精度数或任何其他可转换浮点数

来自分类Dev

将Google Location LatLong整数转换为浮点数

来自分类Dev

将“无限”浮点数转换为整数

来自分类Dev

如何将浮点数转换为整数?

来自分类Dev

将整数列表转换为浮点数

来自分类Dev

python数据帧将整数转换为浮点数

来自分类Dev

无法将浮点数转换为整数

来自分类Dev

如何将整数转换为浮点数?

来自分类Dev

如何将不同符号的浮点数转换为双精度数?

来自分类Dev

将无符号长整数转换为带有2个精度十进制值的浮点数

来自分类Dev

整数除以整数是否需要强制转换为浮点数或加倍精度?

来自分类Dev

将timedelta转换为浮点数

来自分类Dev

将数据转换为浮点数

来自分类Dev

将分数转换为浮点数

来自分类Dev

在C ++中将浮点数转换为双精度数并转换回浮点数是否具有相同的值

来自分类Dev

如何将 4 个浮点数的 ps 向量转换为 4 个双精度数并存储到 pd 数组?

来自分类Dev

浮点数和双精度?

来自分类Dev

将浮点数保存为整数,而不会丢失浮点数精度

来自分类Dev

将任意精度有理数(OCaml,zarith)转换为近似浮点数

来自分类Dev

如何在不损失R精度的情况下将因子转换为浮点数?

来自分类Dev

python:将Unicode转换为具有十进制精度的浮点数

来自分类Dev

将浮点数转换为下一个整数,而不是最接近的整数?

来自分类Dev

如何手动将双精度(浮点数)乘以整数类型(32位,64位,128位等)

来自分类Dev

将浮点数“> =”转换为“>”和“ <=”转换为“ <”

来自分类Dev

整数算术加法和减法在IEEE双精度浮点数中将精确到整数吗?

Related 相关文章

  1. 1

    将字符串转换为整数,双精度,浮点数,而不必捕获异常

  2. 2

    将浮点数转换为整数

  3. 3

    将整数转换为浮点数

  4. 4

    在不损失精度的情况下将 NumPy 浮点数转换为整数

  5. 5

    C ++函数可以采用整数或浮点数或双精度数或任何其他可转换浮点数

  6. 6

    将Google Location LatLong整数转换为浮点数

  7. 7

    将“无限”浮点数转换为整数

  8. 8

    如何将浮点数转换为整数?

  9. 9

    将整数列表转换为浮点数

  10. 10

    python数据帧将整数转换为浮点数

  11. 11

    无法将浮点数转换为整数

  12. 12

    如何将整数转换为浮点数?

  13. 13

    如何将不同符号的浮点数转换为双精度数?

  14. 14

    将无符号长整数转换为带有2个精度十进制值的浮点数

  15. 15

    整数除以整数是否需要强制转换为浮点数或加倍精度?

  16. 16

    将timedelta转换为浮点数

  17. 17

    将数据转换为浮点数

  18. 18

    将分数转换为浮点数

  19. 19

    在C ++中将浮点数转换为双精度数并转换回浮点数是否具有相同的值

  20. 20

    如何将 4 个浮点数的 ps 向量转换为 4 个双精度数并存储到 pd 数组?

  21. 21

    浮点数和双精度?

  22. 22

    将浮点数保存为整数,而不会丢失浮点数精度

  23. 23

    将任意精度有理数(OCaml,zarith)转换为近似浮点数

  24. 24

    如何在不损失R精度的情况下将因子转换为浮点数?

  25. 25

    python:将Unicode转换为具有十进制精度的浮点数

  26. 26

    将浮点数转换为下一个整数,而不是最接近的整数?

  27. 27

    如何手动将双精度(浮点数)乘以整数类型(32位,64位,128位等)

  28. 28

    将浮点数“> =”转换为“>”和“ <=”转换为“ <”

  29. 29

    整数算术加法和减法在IEEE双精度浮点数中将精确到整数吗?

热门标签

归档