मैं एक वर्ग है जो एक आकार का प्रतिनिधित्व करता है। आकार वर्ग में एंगल नामक एक संपत्ति है। मैं इस संपत्ति के लिए सेटर को स्वचालित रूप से सीमा [0,35 9] श्रेणी में लपेटना चाहता हूं।सी # में, मैं Google कैल्क की तरह मॉड्यूलस कैसे कार्यान्वित करूं?
दुर्भाग्यवश, एक साधारण _Angle = value % 360;
केवल सकारात्मक संख्याओं के लिए काम करता है। सी #, -40 % 360 == -40
में। Google कैल्क यह the way I want it करता है। मान 320 होना चाहिए।
सी # में सबसे सुरुचिपूर्ण समाधान क्या है?
public double Angle {
get { return _Angle; }
set {
if (value >= 0) {
_Angle = value % 360;
}
else {
_Angle = value - (360 * ((int)(value/360) - 1));
}
}
}
संपादित करें::
धन्यवाद दोस्तों, मैं अब है:
public double Angle {
get { return _Angle; }
set {
_Angle = (value % 360) + ((value < 0) ? 360 : 0);
}
}
..Which एक बहुत है
यहाँ सबसे अच्छा तरीका है मैं अब तक मिल गया है है बेहतर :)
मैं मॉड्यूल ऑपरेशन के उपयोग को दृढ़ता से हतोत्साहित करता हूं क्योंकि हार्डवेयर मोड/विभाजन धीमा है। यदि आप दो की शक्ति होने के लिए अपने डेटा को स्केल करने में सक्षम हैं, तो आप एक बेहतर समाधान का उपयोग कर सकते हैं जो बिट मास्क का लाभ उठाता है। –
@TrevorBoydmith: क्या सी # कंपाइलर को पूर्णांक के मामले में विभाजन और मॉड्यूलस को बिट ऑपरेशंस को अनुकूलित करने की अनुमति नहीं है? क्या आप फ़्लोटिंग वैल्यू के मामले में बिट ऑपरेशंस को अनुकूलित कर सकते हैं? –