私はBSPで計算機を構築しています。いろいろな数字でテストしてみると、10進数が正しく表示されないという問題がありました。
例えば。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)
result =生成された番号(予想:58.85、ただし58.849999を返します)。