施法提升::单位::数量翻倍

Casting boost::units::quantity to double

本文关键字:单位 施法提      更新时间:2023-10-16

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

像这样:

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

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

p.value();
我认为

您要查找的是:

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

如果划分单位,则留下一个将隐式转换为doublequantity<dimensionless>。这消除了内部表示(value()返回)单元是什么的任何问题。

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

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

  1. operator value_type() const;

    允许隐式转换为value_type

  2. const value_type & value() const;

    值的常量访问器