0
int number1 = 23;
int number2 = 100;

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

这是我想要的:

Output: 0.23

我得到:

error: expected expression before ‘double’

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

4

5 回答 5

2

那是因为您以错误的方式进行类型转换,格式说明符也不正确:

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

这是输出:

http://ideone.com/10a1Ka

于 2013-09-27T11:59:49.770 回答
1

使用%f格式说明符

   printf("Output: %.2f", (double) number1 / number2);
于 2013-09-27T12:00:37.837 回答
1

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

printf("Output: %.2f", (double)number1 / number2);
//                 ^   ^      ^ 
于 2013-09-27T12:01:11.500 回答
1

你有两个错误。

首先,您的投射不正确。像这样加倍:

(double)number1

其次,您使用了错误的打印格式说明符。您使用dwhich 用于整数。改为使用f。把它们放在一起给出:

printf("Output: %.2f", (double)number1 / number2);
于 2013-09-27T12:01:47.157 回答
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”,编译器无法打印浮点值。

于 2013-09-27T12:13:35.733 回答