我试图弄清楚为什么会出现更大的问题,使用较小的程序作为例子.这个较小的程序不起作用,让我相信这是我对有缺陷的功能的理解.
据我所知,下面的程序应该初始化一个最多30个字符的字符串,然后将数字"5"取为9个有效数字,并将其转换为该字符串.然后程序应打印值"5.00000000".但是,程序打印值7.96788(...).为什么是这样?
#include <stdio.h>
int main()
{
char word[30];
sprintf(word, "%.9g", 5);
printf(word);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
rua*_*akh 22
这是因为5是一个整数(int),你告诉sprintf它假装它是一个双精度浮点数(double).你需要改变这个:
sprintf(word,"%.9g", 5);
Run Code Online (Sandbox Code Playgroud)
以下任何一个:
sprintf(word,"%.9g", 5.0);
sprintf(word,"%.9g", (double) 5);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82019 次 |
| 最近记录: |