【问题标题】:C++ String to Int using StringStream not exactC++ String to Int 使用 StringStream 不准确
【发布时间】:2012-06-22 18:01:50
【问题描述】:

我正在尝试执行以下操作:

stringstream convert1(Model_str.substr(2, 12));
cout << (Model_str.substr(2, 12)) << endl; //output = 0.999999
convert1>>vertex1[VertexCounter];
cout << vertex1[VertexCounter] << endl; //output = 0

将它放入我的数组时,它是否不精确到小数点后 6 位?

【问题讨论】:

  • 截断,截断,截断。
  • 究竟int期望得到什么?
  • 我希望两个输出相同。所以 vertex[VertexCounter] 应该是 0.999999
  • 截断是标准行为,而不是四舍五入。
  • vertex1的声明是什么?

标签: c++ string int stringstream


【解决方案1】:

当您从带有&gt;&gt; 的流中提取int 时,只要存在可被视为int 一部分的字符,它就会一直读取。整数不允许小数部分,因此int 值中没有小数点。它从流中读取0,将其存储在vertex1 数组元素中(假设vertex1int 的数组),并将剩余的字符留在输入缓冲区中以供以后的读取操作使用。

如果要从流中读取浮点字符串,至少需要读入支持浮点值的类型,例如 float 或 @987654330 @。你是否得到你期望的精确值是另一回事。您选择的目标类型可能无法代表您想要的确切值。

【讨论】:

  • 啊,谢谢。使用 double 而不是 int 修复它。谢谢你帮我解决这个问题:)
猜你喜欢
  • 1970-01-01
  • 2011-10-19
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
相关资源
最近更新 更多