如果我只想将一个值从一个单位转换为另一个单位,那么最简单(理想情况是一行)的方法是什么?
例如,我想以米为单位存储一个值,但以英里为单位指定。
大多数执行此操作的示例似乎有很多行,涉及typedef和单位定义,并且不提供简单的无单位输出。
答案 0 :(得分:2)
有两种方法可以快速轻松地完成这项工作。
假设您要将100英里转换为米......
第一个明确构建数量:
#include <boost/units/quantity.hpp>
#include <boost/units/systems/si/length.hpp>
#include <boost/units/base_units/imperial/mile.hpp>
double distance_in_metres = boost::units::quantity<boost::units::si::length>(
100.0 * boost::units::imperial::mile_base_unit::unit_type()
) / boost::units::si::meter;
第二个创建转换因子并乘以:
#include <boost/units/systems/si/length.hpp>
#include <boost/units/base_units/imperial/mile.hpp>
double distance_in_metres = 100.0 *
boost::units::conversion_factor(
boost::units::imperial::mile_base_unit::unit_type(),
boost::units::si::meter
);