我需要将数量的值传递给库进行评估。 boost units library在SI中采用双倍值,因此增强单位库在确保需求方面非常有吸引力。但是,我该如何将数量转换为双倍值?文档和示例似乎避免了这种情况,因为这样做的目的是维护单元。
类似的东西:
quantity<pressure> p(101.1 * kilo * pascals);
double dblP = static_cast<double>(p); // double value in Pascals
通过标题建议......这是否是投射到基本类型的正确方法?
p.value();
答案 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);
答案 2 :(得分:4)
reference documentation表示可以使用隐式强制转换或value()
成员方法。
operator value_type() const;
允许隐式转换为value_type
- 醇>
const value_type & value() const;
值的常量访问者