2012-12-18 94 views
6

我需要將數量的值傳遞給庫進行評估。 boost units library在SI中具有雙重值,因此增強單元庫在確保該要求方面非常有吸引力。但是,我應該如何將數量轉換爲雙倍數值?文檔和示例似乎避免了這種情況,因爲其意圖是合理地維護這些單元。Casting boost :: units :: quantity to double

喜歡的東西:

quantity<pressure> p(101.1 * kilo * pascals); 
double dblP = static_cast<double>(p); // double value in Pascals 

經歷的標題暗示...是正確的方法來轉換爲基本類型?

p.value(); 
+1

所以你的問題是 「通過標題建議...'p.value()'去」? –

+0

好點 - 對不起,我在第一個問題之後補充說。我想確保的是.value()確實會返回我期望的可靠。也就是說,是否需要進行諸如psi到Pa的轉換? – ccook

回答

3

reference documentation表明,無論是隱式轉換或value()構件方法都可以使用。

  1. operator value_type() const;

    隱式轉換到VALUE_TYPE允許

  2. const value_type & value() const;

    恆定存取重視

+0

謝謝,該參考文獻是非常有用的(並且很難用關鍵字數量單位增強投射查找) – ccook

+0

'operator value_type()const;'只存在於無量綱量子。否則,這將是可能的:'double v =數量()'。 – alfC

8

我認爲你正在尋找的是這樣的:

quantity<pressure> p(101.1 * kilo * pascals); 
double dblP = p/pascals; // double value in Pascals 

如果分割出去的單位,如果只剩下一個quantity<dimensionless>這將隱式轉換爲double。這消除了什麼內部表示(哪個value()返回)單位的問題。