试一下?
by __Watcher @ 2020-04-02 10:23:23
这难道没有库函数吗......
by Miller2019 @ 2020-04-02 10:23:36
@[邓本永](/user/93041) OK
by Miller2019 @ 2020-04-02 10:24:25
@[邓本永](/user/93041) 可是我不知道有效的小数位数有多少个...
by Miller2019 @ 2020-04-02 10:25:46
@[Miller2019](/user/256340)
```cpp
double x;
...
char ch[1000];
std::sprintf(ch, "%.100f", x);
// 然后把 ch 当做一个普通的字符串,去掉末尾的 0
```
by zhanghengrui @ 2020-04-02 10:28:10
@[zhanghengrui](/user/110634)
```cpp
#include<bits/stdc++.h>
using namespace std;
float a;char str[32];
int main()
{
a=3.1415926000;
char ch[1000];
std::sprintf(ch, "%.100f", a);
printf("%s",ch);
return 0;
}
```
这样测试,末尾还是有 0 啊。
by Miller2019 @ 2020-04-02 10:30:50
`ostringstream`
by Micro_Seven @ 2020-04-02 10:32:23
@[Miller2019](/user/256340) 要手动去除末尾的 $0$
by zhanghengrui @ 2020-04-02 10:32:51
@[Miller2019](/user/256340) 或者从后往前找第一个非 $0$ 的,然后从开头到那个位置输出
by zhanghengrui @ 2020-04-02 10:33:51
@[zhanghengrui](/user/110634)
```cpp
#include<bits/stdc++.h>
using namespace std;
float a;char str[32];
int main()
{
a=3.1415926000;
char ch[1000];
std::sprintf(ch, "%.100f", a);
printf("%s",ch);
return 0;
}
```
的输出结果是
```
3.1415925025939941406250000000000000000000000000000000000000000000000000000000000000000000000000000000
```
为什么较浮点小数发生了变化了呢?
by Miller2019 @ 2020-04-02 10:40:57