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

cco*_*ook 6 c++ boost boost-units

我需要将数量的值传递给库进行评估.该压单元库发生在SI双重价值,所以压单元库是确保需求非常有吸引力.但是,我该如何将数量转换为双倍值?文档和示例似乎避免了这种情况,因为其意图是维护单元.

就像是:

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

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

p.value();
Run Code Online (Sandbox Code Playgroud)

wjl*_*wjl 8

我想你要找的是这个:

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = p / pascals;  // double value in Pascals 
Run Code Online (Sandbox Code Playgroud)

如果你将单位分开,你将留下一个quantity<dimensionless>隐含地转换为a的单位double.这消除了内部表示(value()返回)单位的任何问题.


小智 6

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

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = quantity_cast<double>(p);
Run Code Online (Sandbox Code Playgroud)

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


R. *_*des 5

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

  1. operator value_type() const;

    允许隐式转换为 value_type

  2. const value_type & value() const;

    值的恒定访问者