I need to pass the value of a quantity to a library for evaluation. The boost units library takes double values in SI, so the boost units library is very appealing in ensuring that requirement. However, how should I cast the quantity to a double value? The documentation and example seems to avoid this since the intent is to, rightfully so, maintain the units.
Something like:
quantity<pressure> p(101.1 * kilo * pascals);
double dblP = static_cast<double>(p); // double value in Pascals
Going through the headers suggests... Is that the correct way to cast to the base type?
p.value();
The reference documentation shows that either implicit casts or the
value()
member method can be used.I think what you're looking for is this:
If you divide out the unit, you are left with a
quantity<dimensionless>
which will implicitly convert to adouble
. This eliminates any question of what the internal representation (whichvalue()
returns) units are.Just spotted this. I think the intended method is to use Boost's
quantity_cast
operator.http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units/Quantities.html#boost_units.Quantities.Quantity_Construction_and_Conversion