user-0 提问: 浮点数的一点问题，求大神指教

回复:
user: user-1
content: have a try 	printf("%d %d %d %f\n",a,ft1,ft2);

user: user-2
content: 浮点数有误差很正常。  引用 8 楼 wql13110518269 的回复:[quote=引用 3 楼 turingo 的回复:] printf格式不匹配时结果难料，int用%d，float用%f  [quote=引用 楼主 u010309436 的回复:] void main() { 	int a = 10; 	float ft1=12.253; 	float ft2=23.45;// 	printf("%d %d %f\n",a,ft1,ft2); }  输出结果为 将printf换成这样后 输出结果为： 菜鸟求大神指教···[/quote]  可是为什么后面的输出会是23.45001[/quote]

user: user-3
content: 引用 3 楼 turingo 的回复:printf格式不匹配时结果难料，int用%d，float用%f  [quote=引用 楼主 u010309436 的回复:] void main() { 	int a = 10; 	float ft1=12.253; 	float ft2=23.45;// 	printf("%d %d %f\n",a,ft1,ft2); }  输出结果为 将printf换成这样后 输出结果为： 菜鸟求大神指教···[/quote]  可是为什么后面的输出会是23.45001

user: user-4
content: 本人菜鸟  一本书上看到过这个问题... 第一个%d没有问题 第二个%d是打印四个字节 而ft1是八个字节  多出来的四个字节放到后面的 %f去了   所以 乱了  应该是这样的

user: user-5
content: printf("%按熊猫的格式输出",CSDN论坛的u010309436); 合理的输出应该是……？

user: user-2
content: printf格式不匹配时结果难料，int用%d，float用%f  引用 楼主 u010309436 的回复:void main() { 	int a = 10; 	float ft1=12.253; 	float ft2=23.45;// 	printf("%d %d %f\n",a,ft1,ft2); }  输出结果为 将printf换成这样后 输出结果为： 菜鸟求大神指教···

user: user-5
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）  常量也有类型！ C++ Floating-Point Constants Floating-point constants specify values that must have a fractional part. These values contain decimal points (.) and can contain exponents.  Syntax  floating-constant :  fractional-constant exponent-partopt floating-suffixopt digit-sequence exponent-part floating-suffixopt  fractional-constant :  digit-sequenceopt . digit-sequence digit-sequence .  exponent-part :  e signopt digit-sequence E signopt digit-sequence  sign : one of  + –  digit-sequence :  digit digit-sequence digit  floating-suffix :one of  f l F L  Floating-point constants have a “mantissa,” which specifies the value of the number, an “exponent,” which specifies the magnitude of the number, and an optional suffix that specifies the constant’s type. The mantissa is specified as a sequence of digits followed by a period, followed by an optional sequence of digits representing the fractional part of the number. For example:  18.46 38.  The exponent, if present, specifies the magnitude of the number as a power of 10, as shown in the following example:  18.46e0      // 18.46 18.46e1      // 184.6  If an exponent is present, the trailing decimal point is unnecessary in whole numbers such as 18E0.  Floating-point constants default to type double. By using the suffixes f or l (or F or L — the suffix is not case sensitive), the constant can be specified as float or long double, respectively.  Although long double and double have the same representation, they are not the same type. For example, you can have overloaded functions like  void func( double );  and   void func( long double );

user: user-6
content: 整型、浮点，存储格式不同。

user: user-7
content: 不管是浮点数还是整形，他都是以二进制的形式放入内存中，只是你用printf输出的时候它按照你的格式也就是%d,%f输出，所以你这样输出结果是不好预测的。