printf()和float错误

时间:2013-09-27 11:57:58

标签: c casting double printf

int number1 = 23;
int number2 = 100;

printf("Output: %.2d", double(number1) / number2);

我想要:

Output: 0.23

我得到:

error: expected expression before ‘double’

我不明白错误信息。如何将整数转换为double并执行计算?

5 个答案:

答案 0 :(得分:2)

那是因为你用错误的方式进行类型转换,格式说明符也是错误的:

printf("Output: %.2f", (double)number1 / number2);

这是输出:

http://ideone.com/10a1Ka

答案 1 :(得分:1)

使用%f格式说明符

   printf("Output: %.2f", (double) number1 / number2);

答案 2 :(得分:1)

强制转换的正确语法是(double)number1 / number2,您应该使用%.2f作为格式说明符。

printf("Output: %.2f", (double)number1 / number2);
//                 ^   ^      ^ 

答案 3 :(得分:1)

你有两个错误。

首先你输错了。像这样投两倍:

(double)number1

其次,您使用了错误的打印格式说明符。您使用d表示整数。请改用f。把它们放在一起就可以了:

printf("Output: %.2f", (double)number1 / number2);

答案 4 :(得分:1)

让我们看一下格式说明符的一些基础知识吗?

**Format specifier**    **Characters matched**  **Argument type**

%c                           any single character   char

%d, %i                       integer            integer type

%u                           integer            unsigned

%o                           octal integer      unsigned

%x, %X                       hex integer        unsigned

%e, %E,%f, %g, %G            floating point 
                             number             floating type

%p                           address format     void *


%s                           any sequence of 
                             non-whitespace 
                             characters         char

您使用“%d”而不是“%f”,编译器无法打印浮点值。