Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays ColdFusion中的类型化数组与非类型化数组_Arrays_Coldfusion_Cfml_Coldfusion 2018 - Fatal编程技术网

Arrays ColdFusion中的类型化数组与非类型化数组

Arrays ColdFusion中的类型化数组与非类型化数组,arrays,coldfusion,cfml,coldfusion-2018,Arrays,Coldfusion,Cfml,Coldfusion 2018,我有以下代码: <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.app

我有以下代码:

<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>

数据=['2342bas','asqwerewq','12314',12421,1.1];
newdata=arrayNew['Numeric'](1);
用于(数据中的项目){
newdata.append(val(item));
}
writedump(新数据);
新数据=[];
用于(数据中的项目){
newdata.append(val(item));
}
writedump(新数据);
我得到以下结果:


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

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

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

<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>

数据=['2342bas','asqwerewq','12314',12421,1.1];
newdata=arrayNew['Numeric'](1);
用于(数据中的项目){
newdata.append(val(item));
}
newdata.each(函数(值){
writeoutput(“
#value##getMetadata(value).getName()#”); }); 写输出(“
”); 新数据=[]; 用于(数据中的项目){ newdata.append(val(item)); } newdata.each(函数(值){ writeoutput(“
#value##getMetadata(value).getName()#”); });
结果


有趣的是,BigDecimal总是有一个小数,Double可能有也可能没有。基于这个问题,我从来都不知道它们是在ColdFusion中使用BigDecimal的一种方法。

@Alex在追加之前,他正在对值运行val()
val
可能会转换为数字(删除字符),但数组仍存储为
变量
类型。数组['numeric']最终存储为double。当您使用
cfqueryparam cf\u sql\u numeric
时,您会在调试输出中看到所有数字都以float/double的形式传递到数据库中。