कैसे रखने के लिए इकाई रूपांतरण में बढ़ावा देने::इकाइयों में एकल परिशुद्धता तैरता है?

0

सवाल

मैं उपनाम रेडियन और डिग्री के लिए है कि का उपयोग नाव के रूप में भंडारण के प्रकार.

जब मैं के बीच कनवर्ट इन दो इकाइयों को मैं विधानसभा मूल्यों को बढ़ावा के लिए दोगुना हो जाता है और फिर वापस करने के लिए मंगाई कर रही है जब रूपांतरण.

Q: कैसे कर सकते हैं मुझे यकीन है कि सभी आपरेशनों और रूपांतरण रहने में तैरता है?

मेरे कोड:

using radians_f = boost::units::quantity<boost::units::si::plane_angle, float>;
using degrees_f = boost::units::quantity<boost::units::degree::plane_angle, float>;

degrees_f to_degrees(const radians_f& angle) { return static_cast<degrees_f>(angle); }
radians_f to_radians(const degrees_f& angle) { return static_cast<radians_f>(angle); }

से संकलक एक्सप्लोरर मैं निम्न देखें विधानसभा निर्देश: https://godbolt.org/z/Gnjr54dn6

  • cvtss2sd - धर्मान्तरित एक एकल परिशुद्धता चल बिन्दु मूल्य में, "कन्वर्ट-से" स्रोत संकार्य के लिए एक डबल परिशुद्धता चल बिन्दु मूल्य में गंतव्य संकार्य.

  • mulsd - पलता कम डबल परिशुद्धता चल बिन्दु मूल्य में दूसरा स्रोत संकार्य से कम डबल परिशुद्धता चल बिन्दु मूल्य में पहली स्रोत संकार्य.

  • cvtsd2ss - धर्मान्तरित एक डबल परिशुद्धता चल बिन्दु मूल्य में, "कन्वर्ट-से" स्रोत संकार्य के लिए एक एकल परिशुद्धता चल बिन्दु मान

पुनश्च: मुझे आश्चर्य नहीं होगा अगर मैं परिभाषित किया गया है, अपने उपनाम या/और अपने रूपांतरण कार्यों के लिए ग़लत ढंग से ।

boost boost-units c++ c++14
2021-11-23 10:02:53
1

सबसे अच्छा जवाब

1

मैंने पाया एक hacky समाधान (जो मैं कर रहा हूँ यकीन है कि हो सकता है "productionized" बनाने के द्वारा को बढ़ावा देने इकाइयों की गणना 57.x डिग्री प्रति कांति निरंतर) से बचने के लिए रूपांतरण करने के लिए और से doubleहै , लेकिन यह वास्तव में प्रकाश डाला गया है कि इस तथ्य को बढ़ावा इकाइयों पैदा कर रहा है एक और आश्चर्य की बात है की तरह भूमि के ऊपर: स्मृति लोड और दुकानों जो आवश्यक नहीं कर रहे हैं यदि आप का उपयोग float सीधे, या यहां तक कि अपने खुद के आवरण के लिए float.

डेमो: https://godbolt.org/z/afPE7baxT

तो, जबकि ऊपर से पता चलता है एक (अपरिष्कृत) जिस तरह से करने के लिए बल की गणना करने के लिए रहने के रूप में तैरता है, अगर अपने असली सवाल है "मैं कैसे से बचने उपरि" आप अभी भी कर रहे हैं एक बिट से दूर निर्वाण ।

2021-11-23 10:46:36

दुर्भाग्य से कोणों का उपयोग कर रहे थे, कम से कम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण में के सवाल "मैं कैसे से बचने उपरि" समस्या के बाद से लागू होता है के लिए कई अन्य इकाइयों की जरूरत है कि मैं के रूप में अच्छी तरह से.
CJCombrink

@CJCombrink: हाँ, मैं क्या कह रहा हूँ यह है कि यह की तरह लग रहा है से बचने के (सभी) भूमि के ऊपर की आवश्यकता हो सकती है खुदाई को बढ़ावा देने इकाइयों पर आधारित है, डेमो मैं ऊपर बनाया.
John Zwinck

एक नाशक या एक प्रतिलिपि निर्माता में अपने आवरण के कारण कर सकते हैं इस suboptimality.
n. 1.8e9-where's-my-share m.

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में