2013-11-25 5 views
1

한 장치에서 다른 장치로 값을 변환하고 싶다면 가장 간단한 방법은 무엇입니까?Boost :: units을 사용하여 두 수량 사이를 변환하는 가장 간단한 방법은 무엇입니까?

예를 들어, 미터에 값을 저장하려고하지만 마일로 지정하고 싶습니다.

이 작업을 수행하는 대부분의 예제는 여러 줄로 길고 typedef 및 단위 정의를 포함하며 단순한 단위없는 출력을 제공하지 않습니다.

답변

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 
); 
:

#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; 

두 번째는 그하여 변환 계수 및 증식을 작성

명시 적으로 첫 번째는 양을 구성 ... 당신이 미터 100 마일을 변환 할 말

4

hmmm - 다음을 사용합니다.

#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

+0

에서 찾을 수 있습니다 정적 캐스트 때문에 정밀도의 잠재적 손실 필요하다? –

+0

si :: length는 길이 (미터)입니다. 100.0 * boost :: units :: imperial :: mile_base_unit :: unit_type()은 몇 마일입니까? 정적 캐스트는 마일 수를 미터 단위로 측정되는 길이 수량으로 변환합니다. –