我正在用 BSP 构建一个计算器。当我用各种数字测试它时,我遇到了十进制数字无法正确显示的问题。
例如。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)。