求助:如何忽略浮点小数末尾0(C++)

学术版

试一下?
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


上一页 | 下一页