1

値をある単位から別の単位に変換したいだけの場合、これを行う最も簡単な (理想的には 1 行の) 方法は何ですか?

たとえば、値をメートル単位で保存したいのですが、マイル単位で指定します。

これを行うためのほとんどの例は、多くの行が長く、typedef とユニット定義を含み、単純なユニットのない出力を提供していないようです。

4

2 に答える 2

5

うーん - 私は以下を使用します。

#include <boost/units/quantity.hpp>
#include <boost/units/systems/si/length.hpp>
#include <boost/units/base_units/imperial/mile.hpp>

using namespace boost::units;

quantity<si::length> distance_in_metres = static_cast<quantity<si::length> >(
    100.0 * boost::units::imperial::mile_base_unit::unit_type()
);

参考までに - CPPcon 2015 でブースト ユニットに関するチュートリアル プレゼンテーションを行いました - https://www.youtube.com/watch?v=qphj8ZuZlPAでご覧いただけます

于 2015-09-19T21:53:04.053 に答える
3

これをすばやく簡単に行うには、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;

2 番目は変換係数を作成し、それを乗算します。

#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
  );
于 2013-11-25T09:52:45.550 に答える