Age: 190 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Wed Feb 15, 2012 3:25 pm Post subject: Как надо округлять
Надыбал в коде такой алгоритм округления, круто
Code:
* correct rounding errors
CASE l_difference.
WHEN '0.01'.
CASE l_current_per.
WHEN '06'.
l_correct = ' - 0.01'.
ENDCASE.
WHEN '0.01-'.
CASE l_current_per.
WHEN '07'.
l_correct = '0.01'.
ENDCASE.
WHEN '0.02'.
CASE l_current_per.
WHEN '03' OR '09'.
l_correct = '- 0.01'.
ENDCASE.
WHEN '0.02-'.
CASE l_current_per.
WHEN '04' OR '10'.
l_correct = '0.01'.
ENDCASE.
WHEN '0.03'.
CASE l_current_per.
WHEN '02' OR '06' OR '10'.
l_correct = '- 0.01'.
ENDCASE.
WHEN '0.03-'.
CASE l_current_per.
WHEN '03' OR '07' OR '11'.
l_correct = '0.01'.
ENDCASE.
WHEN '0.04' OR '0.04-'.
CASE l_current_per.
WHEN '02' OR '05' OR '08' OR '11'.
IF l_difference < 0.
l_correct = '0.01'.
ELSE.
l_correct = '- 0.01'.
ENDIF.
ENDCASE.
WHEN '0.05'.
CASE l_current_per.
WHEN '02' OR '04' OR '06' OR '09' OR '11'.
l_correct = '- 0.01'.
ENDCASE.
WHEN '0.05-'.
CASE l_current_per.
WHEN '02' OR '04' OR '07' OR '09' OR '11'.
l_correct = '0.01'.
ENDCASE.
WHEN '0.06' OR '0.06-'.
CASE l_current_per.
WHEN '02' OR '04' OR '06' OR '08' OR '10' OR '12'.
IF l_difference < 0.
l_correct = '0.01'.
ELSE.
l_correct = '- 0.01'.
ENDIF.
ENDCASE.
WHEN OTHERS.
l_correct = 0.
ENDCASE.
_________________ Молитва - это запрос разработчику на изменение кода программы.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.