问题标签 [boost-lexicalcast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1080 浏览

c++ - Boost 的 lexical_cast 从 double 到 string Precision

我正在使用一个库,不幸的是它boost::lexical_cast用于从 a 转换doublestring.

我需要能够明确地反映我身边的这种行为,但我希望在不传播boost.

to_string使用,sprintf或标准中包含的某些其他功能可以保证我的行为相同吗?

0 投票
3 回答
588 浏览

c++ - 将词法转换双精度提升到字符串,给出无效结果

我正在尝试这个:

并期望输出为:

但输出是:

g++ 版本:5.4.0,升压版本:1.66

我能做些什么来让它打印出它得到的东西。

0 投票
1 回答
749 浏览

c++ - 使用词法转换设置'string to double'中双精度变量的精度

我有一个值为"496934.079"的字符串。我使用boost::lexical_cast ()将其转换为双变量(名为pVar)。

但是转换后存储在 pVar 中的值是"496934"而不是"496934.079"。小数点后的数字缺失。我已经阅读了有关std::setprecision()在此处的输出窗口中以所需精度写入双精度值的信息。但它只显示具有给定精度的值,并且不会将其保存在具有给定精度的变量中。

但我想将双精度值完全存储在字符串变量str中,以便 pVar 中的值为"496934.079"。如何以与输入字符串相同的精度将值存储在变量中,以便可以使用该变量进行进一步处理?

我的代码片段是:

编辑:从字符串到浮点的这种转换是我正在开发的代码的一部分,它逐行解析文本文件中的值并将它们写入另一个文件(.pcd 格式)。我正在添加用于此转换的整个代码以供参考。

下面是文本文件中的几行示例以及转换后的“.pcd”文件中的相应行。

在文本文件中:

496934.999 5419547.239 265.179

496933.981 5419542.579 263.819

496934.891 5419545.399 264.849

496934.939 5419546.329 265.111

496934.829 5419544.489 264.781

在“.pcd”文件中(对应的值来自boost::lexical_cast ()

496935 5419547 265.17899

496933.97 5419542.5 263.819

496934.91 5419545.5 264.849

496934.94 5419546.5 265.11099

496934.84 5419544.5 264.78101

请注意,这些值要么四舍五入,要么在输出“.pcd”文件中更改小数点后的数字。这可能是什么原因?

0 投票
1 回答
5678 浏览

c++ - 提升坏词法转换:将字符串转换为无符号长长时,源类型值无法解释为目标

我在wandbox.org上编译的以下代码导致以下错误。我不明白为什么我会收到错误。

启动 prog.cc:在函数“int main()”中:prog.cc:11:15:警告:未使用的变量“结果”[-Wunused-variable] 11 | Ulonglong 结果 = boost::lexical_cast("862.00"); | ^~~~~~ 在抛出'boost::wrapexcept'的实例后调用终止what():错误的词法转换:源类型值无法解释为目标中止完成