c++ - 浮动到字符串而不四舍五入
问题描述
我想从十进制数中提取小数位。没那么难,对吧?
所以,我将浮点数转换为字符串。
然后,我曾经substr()
从 , 开始裁剪字符串string.find('.')+1
,直到结束。
嗯....问题就在这里。当我们有这样的数字时:5.7741589
,它不是那么“精确”,它实际上是:5.774159
如果它自己四舍五入,我不能精确地得到小数位数......所以问题是:
如何在不四舍五入的情况下将十进制数转换为字符串?
编辑:由于很多人都在要求实际的输入和输出以及代码,所以这里是:
Input: 5.7741589
Output (let's say we want to output just decimal places): 7741589
Output (not expected one): 774159
代码:
float num;
cin>>num;
string s = to_string(num);
s = s.substr(s.find('.')+1,s.length());
cout<<s<<endl;
EDIT2:还有一件事。我需要这个来进行竞争性编程,我可以将输入作为字符串来做这个练习。想象一下你有 2 个小数的问题,你需要将它们相乘,然后计算小数位数。然后你再次失去小数位,这是问题。
解决方案
一旦您使用二进制浮点数对十进制数进行建模,就会出现腐烂:浮点方案对实数的子集进行建模。在这方面,使用整数类型没有什么不同:从概念上讲,出现的问题没有什么不同。
如果您想准确地模拟十进制数字,请使用十进制类型。
推荐阅读
- reactjs - 无法使用 react-intl-tel-input 组件对未安装的组件执行 React 状态更新
- javascript - 检查对象中的任何数组是否包含空值
- linux-kernel - RPi4:设备驱动程序 - 带有浮点数的 pr_info 导致构建错误
- android - 如何制作一个文本,它会水平滚动其内容,而内容长于 android jetpack compose 中的大小?
- python - 使用会话用户而不是通过凭据进行连接
- visual-studio - MyGet 不显示 nuget 包自包含图标
- flutter - 如何在加载图像时添加进度条或循环进度此代码(颤振)?我尝试了不同的解决方案,但没有运气:(
- python - Reg ex 用于删除 python 上的数字和括号
- python - 如何使用 pymongo 在 mongodb 中重命名父字段名称和嵌套字段值?
- sap-fiori - 将 SAP Fiori 应用程序部署到 CloudFoundry 时出现问题