You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy实现数组小数向下取整并统计唯一值数量

感谢aspok提供的帮助

问题背景
  • 开发需求:将提取到的数值列表处理为[3, 3, 4]格式后,统计列表内唯一值的总个数
  • 实现逻辑:脚本读取输入JSON,提取所有F4211_LNID字段值存入列表,初始提取结果为[3.1, 3.9, 4],需要对列表内所有数值做小数位向下取整处理
  • 遇到的问题:最初尝试直接调用Math.floor(intListItems)完成数组值向下取整,运行时抛出如下错误:
Exception No signature of method: static java.lang.Math.floor() is applicable for argument types: (ArrayList) values: [[3.1, 3.9, 4]] Possible solutions: floor(double), log(double), find(), macro(groovy.lang.Closure), acos(double), cos(double)

报错信息中可以看到正确提取的列表数据,但无法定位报错原因,也无法完成向下取整操作。

报错原因

java.lang.Math.floor()是针对单个双精度浮点数的取整方法,仅支持接收double类型入参,不能直接传入ArrayList类型的整个列表做批量处理,直接传列表就会触发上述参数不匹配的错误。

可正常运行的Groovy实现代码
// Read Input Values
String aInputJson = aInputMap.InputJson ?: "{}"
   
// Initialize Output Values
def intListItems = []
def uniqueCount = 0 
    
// Parse JSON
def json = new JsonSlurper().parseText( aInputJson )
    
// Determine Row Numbers
def rowset = json?.fs_DATABROWSE_F4211?.data?.gridData?.rowset

// 遍历行集合,对每个F4211_LNID字段值单独做向下取整
intListItems = rowset.collect{ Math.floor(it.F4211_LNID) }
    
// 对取整后的列表去重
intListItems.unique()
    
// 统计唯一值总数
uniqueCount = intListItems.size()  
测试使用的JSON数据
{
  "fs_DATABROWSE_F4211": {
    "title": "Data Browser - F4211 [Sales Order Detail File]",
    "data": {
      "gridData": {
        "id": 58,
        "fullGridId": "58",
        "rowset": [
          {
            "F4211_LNTY": "S",
            "F4211_CPNT": 0,
            "F4211_MCU": "      114000",
            "F4211_DSC2": "NAS133N3EK166",
            "F4211_NXTR": "580",
            "F4211_LNID": 3.1,
            "F4211_DOCO": 2845436
          },
          {
            "F4211_LNTY": "S",
            "F4211_CPNT": 0,
            "F4211_MCU": "      114000",
            "F4211_DSC2": "NAS133N3EK166",
            "F4211_NXTR": "580",
            "F4211_LNID": 3.9,
            "F4211_DOCO": 2845436
          },
          {
            "F4211_LNTY": "S",
            "F4211_CPNT": 0,
            "F4211_MCU": "      114000",
            "F4211_DSC2": "NAS133N3EK166",
            "F4211_NXTR": "580",
            "F4211_LNID": 4,
            "F4211_DOCO": 2845436
          }
        ],
        "summary": {
          "records": 1,
          "moreRecords": false
        }
      }
    },
    "errors": [],
    "warnings": []
  },
  "currentApp": "DATABROWSE_F4211",
  "timeStamp": "2000-06-01:09.42.02",
  "sysErrors": []
}

内容的提问来源于stack exchange,提问作者Flip7607

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:18:19