如何分割一组数字并与另一组数字进行比较



说我没有。20101105,我需要将它与一系列其他的序号进行比较,比如20110105, 20090105,找到最接近的序号。。

我不想在整体上比较它,我需要通过解析它来比较每个数字,然后看看哪个最接近。

有人建议如何在ABAP语言中做到这一点吗?

总的来说你应该提到更多的信息。例如,这些数字真的是整数吗?然后,您可以将它们放入内部表中,并对它们进行排序,这是找到与实际扫描相关的任何"最接近"数字的最简单解决方案。这就像整数在排序中一样,它们像数字一样排序,朋友。但是如果你想要按字符进行比较(如果数字是整数,那就没有意义了),我会在do-loop中为你提供一些字符比较的帮助,将较小的字符串长度作为迭代器计数器。我省略了else,那是你的"家庭作业"。: - d

  DATA:
    lv_length1  TYPE i,
    lv_length2  TYPE i,
    lv_cnt      TYPE i,
    lv_teststr1 TYPE string VALUE '123456',
    lv_teststr2 TYPE string VALUE '1235'.
lv_length1 = strlen( lv_teststr1 ).
lv_length2 = strlen( lv_teststr2 ).
IF lv_length1 GE lv_length2.
  DO lv_length2 TIMES.
    IF lv_teststr2+lv_cnt(1) NE lv_teststr1+lv_cnt(1).
      BREAK-POINT.
    ENDIF.
    ADD 1 TO lv_cnt.
  ENDDO.
ENDIF.

计数器变量也是第一个不匹配字符的索引。这样就完成了工作。我刚刚编写并测试了

我不知道我是否理解,但也许这有帮助。

report  znearest.
data lv_value(8) type n.
parameters p_value(8) type n. " ---------> The value
select-options s_values for lv_value. " -> The list
start-of-selection.
data: wa like line of s_values,
      lv_dif(8) type n,
      lv_nearest(8) type n,
      lv_nearest_dif(8) type n,
      lv_first type c.
loop at s_values into wa.
  lv_dif = abs( p_value - wa-low ). " Calculate the difference
  if lv_first is initial.
    lv_nearest_dif = lv_dif.
    lv_first = 'X'.
  endif.
  if lv_dif le lv_nearest_dif. " Compare the differences
    lv_nearest = wa-low.
    lv_nearest_dif = lv_dif.
  endif.
endloop.
write: 'The nearest from', p_value, 'is', lv_nearest.

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新