6

我需要将数量的值传递给库进行评估。boost 单位库在 SI 中采用 double 值,因此boost 单位库在确保该要求方面非常有吸引力。但是,我应该如何将数量转换为双精度值?文档和示例似乎避免了这种情况,因为其目的是理所当然地维护这些单元。

就像是:

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = static_cast<double>(p);  // double value in Pascals 

浏览标题建议...这是转换为基本类型的正确方法吗?

p.value();
4

3 回答 3

9

我认为您正在寻找的是:

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = p / pascals;  // double value in Pascals 

如果你把单位分开,你会得到 a quantity<dimensionless>,它会隐式转换为 a double。这消除了关于内部表示(value()返回)单位是什么的任何问题。

于 2013-11-11T22:19:57.670 回答
7

才发现这个。我认为预期的方法是使用 Boost 的quantity_cast运算符。

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = quantity_cast<double>(p);

http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units/Quantities.html#boost_units.Quantities.Quantity_Construction_and_Conversion

于 2014-02-09T12:59:55.223 回答
4

参考文档显示可以使用隐式转换或value()成员方法。

  1. operator value_type() const;

    允许隐式转换为 value_type

  2. const value_type & value() const;

    值的常量访问器

于 2012-12-18T16:54:49.040 回答