如何在没有美元符号的情况下使用快捷方式读取价格金额?

时间:2014-10-12 03:40:22

标签: c

这个问题类似于我在Why am not getting the right char values from scanf(c Linux vi) when scanning a file?之前提出的问题。

我从这个问题的答案中了解到,你可以使用scanf like scanf(“%c”)在阅读角色时跳过空格和白线。有这样的捷径你也可以用钱吗?假设用户在标准输入中输入$ 4.22。是否有scanf可以跳过特殊字符,然后将该金额解释为浮点数?或者你只需​​要首先扫描角色然后扫描浮动金额吗?

2 个答案:

答案 0 :(得分:1)

如果您确定肯定会有$,那么您可以将其包含在格式中,例如scanf(“$%d。%d”,& dollar,& cents)。试试吧!

$ cat scan.c 
#include <stdio.h>

int main()
{
  int dollars, cents;
  scanf("$%d.%d", &dollars, &cents);
  printf("That's %d dollars and %d cents.\n", dollars, cents);
  return 0;
} 
$ make scan
cc     scan.c   -o scan
$ ./scan 
$4.22
That's 4 dollars and 22 cents.
$ 

答案 1 :(得分:0)

  

这样的快捷方式是否也可以用钱?

不幸的是,不是语言本身的一部分。但是你肯定会使用这样一个库。您只需麻烦编译/链接它,并确保在动态链接时分发它。

  

跳过特殊字符,然后将该金额解释为浮点数?

注意!不要将货币表示为浮点数。它用来近似实数的行为不适合货币。它会引入不准确之处。

What Every Computer Scientist Should Know About Floating-Point Arithmetic是一个受欢迎的参考(虽然可能有点压倒性)。