1

我有以下代码:

<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];

newdata = arrayNew['Numeric'](1);

for (item in data)  {
    newdata.append(val(item));
    }

writedump(newdata); 


newdata = [];

for (item in data)  {
    newdata.append(val(item));
    }

writedump(newdata);  
</cfscript>

我得到以下结果:

在此处输入图像描述

我想知道为什么它们不同。“数字”是否强制所有数据为浮点数?

4

2 回答 2

2

ColdFusion 通常将数值作为java.lang.Double数据类型。java.lang.Double作为附加的一部分,它可能会对每个值进行强制转换。

于 2019-10-16T17:52:04.897 回答
0

为了得到答案,我不得不深入研究元数据

<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];

newdata = arrayNew['Numeric'](1);

for (item in data)  {
    newdata.append(val(item));
    }

newdata.each(function(value) {
    writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
    });

writeoutput("<hr />");


newdata = [];

for (item in data)  {
    newdata.append(val(item));
    }

newdata.each(function(value) {
    writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
    });
</cfscript>

结果

在此处输入图像描述

有趣的是 BigDecimal 总是有一个小数,而 Double 可能有也可能没有。基于这个问题,ColdFusion: Get variable type,我从来不知道他们是在 ColdFusion 中使用 BigDecimal 的一种方式。

于 2019-10-20T05:34:56.730 回答