将boost :: units :: quantity转换为double

时间:2012-12-18 16:10:28

标签: c++ boost boost-units

我需要将数量的值传递给库进行评估。 boost units library在SI中采用双倍值,因此增强单位库在确保需求方面非常有吸引力。但是,我该如何将数量转换为双倍值?文档和示例似乎避免了这种情况,因为这样做的目的是维护单元。

类似的东西:

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

通过标题建议......这是否是投射到基本类型的正确方法?

p.value();

3 个答案:

答案 0 :(得分:8)

我认为您正在寻找的是:

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

如果您将单位分开,则会留下quantity<dimensionless>,它会隐式转换为double。这消除了内部表示(value()返回)单位是什么的任何问题。

答案 1 :(得分:6)

刚发现这个。我认为预期的方法是使用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

答案 2 :(得分:4)

reference documentation表示可以使用隐式强制转换或value()成员方法。

  
      
  1. operator value_type() const;

         

    允许隐式转换为value_type

  2.   
  3. const value_type & value() const;

         

    值的常量访问者

  4.