के रूप में प्रदर्शित करता है मैं बसपा के साथ एक कैलकुलेटर बना रहा हूं। जैसा कि मैंने इसे विभिन्न संख्याओं के साथ परीक्षण किया, मैं एक समस्या में भाग गया कि दशमलव संख्या सही तरीके से प्रदर्शित नहीं होती है।58.85 58.84999999999
उदाहरण के लिए। 58.85 -> 58.849999। लेकिन 58.84 या 58.86 काम ठीक है। 58.8471 -> 54.84710000000001। अंत में अंतिम टाइप किए गए अंक कहीं से भी सहेजे नहीं जाएंगे।
मेरा कोड नीचे दिए गए कोड।
method GENERATE_NUM.
DATA: lv_digi type I. * number of digits after the decimal point
call METHOD me->get_decimal
RECEIVING
getdigits = lv_digi.
*if it is a natural number
IF lv_digi = 0.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
*if it is a float number
Else.
IF thisnum < 0.
result = thisnum - (newdigit/10 ** lv_digi).
ELSE.
result = thisnum + (newdigit/10 ** lv_digi).
ENDIF.
*increase the number of decimal point by 1
call method me->set_decimal.
ENDif.
endmethod.
मैं मूल रूप से क्या करना है हर एक संख्या क्लिक किया जाता है, यह "generate_num" प्रणाली को बुलाती है। यह पैरामीटर के रूप में THISNUM, NEWDIGIT, RESULT लेता है।
thisnum = वर्तमान संख्या (उदाहरण: 58.8)
newdigit = क्लिक किया गया नंबर (उदाहरण: 5)
परिणाम = जेनरेट नंबर (अपेक्षित: 58.85 लेकिन 58.849 999 लौटाता है)।
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – Mysticial
यदि आप इस समस्या को हल करने के लिए कहां और कैसे हल करते हैं तो यह सहायक होगा? –
यह उन सामान्य प्रश्नों में से एक है जिन्हें बहुत लंबे स्पष्टीकरण की आवश्यकता होती है। मैं किसी और को बंद करने के लिए एक उपयुक्त डुप्लिकेट खोजने या खोजने दूंगा। – Mysticial