在C++中将字符串转换为带完整有效数字的浮点值[修复了在开发人员C++中工作的问题]
Convert string into float in C++ with full Significant figures [Fixed working in Dev C++]
我想将包含数字浮点的字符串转换为具有完整有效数字的浮点或双数据类型值。请帮助我修复此
#include <sstream>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string q = "23.3453535";
float f;
istringstream(q) >>f;
f=1.0*f; // stack-overflow viewer it is an example because i want to process this float value
cout<<f;
}
/*OutPut is:
23.3454
but i want this
23.3453535
*/
如果要控制精度,请包含#include <iomanip>
并使用std::cout << std::setprecision(17);
设置所需的位数。此外,float具有6个有效位的精度,而double具有12个有效位。因此,每当你的字符串的小数位数超过6位时,就有可能失去精度。
这里有两个问题:
-
您正在使用
std::ostream
上浮点输出的默认格式,即6位数字。使用std::setprecision(n)
可以根据需要增加精度以包含足够的小数位数。 -
您正试图从
float
中获得比它所支持的更高的精度。"23.3453535"
长9位,因此每个数字3.3位,大约需要30位来存储这个数字,同时保留所有位。(确切地说,您需要ceil(log(233453535)/log(2))
,它是28)。float
只有23位来存储尾数,因此当值在可表示的范围内时,最后的一些数字将消失。您可以通过使用double
而不是float
来解决此问题,但作为float
,您永远不会得到9个有效的十进制数字。
相关文章:
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- 我正在开发服务器,ip作为参数传递不起作用
- 如何使用 GPS 和指南针开发点移动算法
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 使用AAR的虚幻安卓开发
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 开发C++/地图中的控制台角色扮演游戏
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 使用 AWS C++ 开发工具包分段上传 S3
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 与 AWS 开发工具包的链接问题
- CMake 工具链文件:嵌入式开发的适当值"CMAKE_SYSTEM_PROCESSOR"
- 错误:#include 在开发C++中嵌套得太深
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 可视化配置 VS 代码以进行 C++ 编程和开发
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- C++如何告诉开发人员在设计模板(如Java接口)时实现某事
- 在没有Xcode的macOS中开发具有依赖关系的应用程序
- 仅在标头开发中转发声明
- 如何使用 AWS C++ 开发工具包在给定的开始和结束日期范围内列出 S3 中的文件