用Boost :: units转换两个量的最简单方法是什么?

时间:2013-11-25 09:52:46

标签: c++ boost boost-units

如果我只想将一个值从一个单位转换为另一个单位,那么最简单(理想情况是一行)的方法是什么?

例如,我想以米为单位存储一个值,但以英里为单位指定。

大多数执行此操作的示例似乎有很多行,涉及typedef和单位定义,并且不提供简单的无单位输出。

1 个答案:

答案 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
  );