Apache flex firefox赢得了';t在flex中将字符串转换为数字
我使用全局坐标在Flex中制作web应用程序 我从web服务获取坐标作为字符串,然后执行以下操作:Apache flex firefox赢得了';t在flex中将字符串转换为数字,apache-flex,actionscript-3,string,firefox,numbers,Apache Flex,Actionscript 3,String,Firefox,Numbers,我使用全局坐标在Flex中制作web应用程序 我从web服务获取坐标作为字符串,然后执行以下操作: latStr:String = "28.7242100786401"; longStr:String = "-106.12635420984"; var cLat:Number = new Number(latStr); var cLong:Number = new Number(longStr); 这在IE和chrome上,从web服务器和本地调试时都能完美工作,但Firefox只在web服
latStr:String = "28.7242100786401";
longStr:String = "-106.12635420984";
var cLat:Number = new Number(latStr);
var cLong:Number = new Number(longStr);
这在IE和chrome上,从web服务器和本地调试时都能完美工作,但Firefox只在web服务器cLat
和cLong
return“NaN
”中进行本地调试时才工作
亲自查看,当您单击结果时,它会弹出一个警报:
因此,我尝试使用parseFloat()
,但它将cLat
循环到28
,并将cLong
循环到-106
:(
然后我试着将小数从整数中分离出来,就像我的例子28和7242100786401一样,然后将7242100786401/100000000000=0.7242100786401分开
有两个数字28和0.7242100786401,我把它们加起来
28+0.7242100786401=28.7242100786401
以下是代码格式:
var latArr:Array = latStr.split(".");
var longArr:Array = longStr.split(".");
var latDivStr:String = "1";
for (var i:int= 0; i< latArr[1].length; i++){
latDivStr += "0";
}
var longDivStr:String = "1";
for (var j:int = 0; j< longArr[1].length; j++){
longDivStr += "0";
}
var cLat:Number = parseFloat(latArr[0]) + arseFloat(latArr[1])/parseFloat(latDivStr);
var cLong:Number = parseFloat(longArr[0]) - parseFloat(longArr[1])/parseFloat(longDivStr);
var-latArr:Array=latStr.split(“.”);
var longArr:Array=longtr.split(“.”);
var latDivStr:String=“1”;
对于(变量i:int=0;i
同样,这种方法在任何地方都很有效,只是在web服务器的firefox中不起作用>\u>
有人有什么想法吗?我快发疯了,我从来没有听说过这样的错误,因为Flash运行时应该让不同的浏览器和操作系统以相同的方式解释SWF。我要说的是,我认为你不应该在你的数字铸造前使用“new”
latStr:String = "28.7242100786401";
longStr:String = "-106.12635420984";
var cLat:Number = new Number(latStr);
var cLong:Number = new Number(longStr);
这应该是:
var cLat:Number = Number(latStr); //Number is right because its a Floating Point, but remove new.
var cLong:Number = Number(longStr); //Number is right because its a Floating Point, but remove new.
我使用下面的方法测试了数据,发现没有发生舍入
var-latStr:String=“28.7242100786401”;
var longStr:String=“-106.12635420984”
我不明白你为什么需要这种解决方法。另外,我使用firefox作为我的主浏览器,你的网站似乎工作得很好
干杯。我终于找到了它为什么不工作的原因,因为某些原因,在firefox中,它从web服务(在vb.net中完成)中读取一个逗号(,),而不是读取一个点() 它在本地也以点的形式读取,而不是在线读取,所以我想它必须与我的IIS服务器O_O做些什么
希望这对其他人有所帮助…逗号是许多欧洲国家的分隔符,因此它很可能是服务器或客户端上的区域配置。您好,谢谢您的回复。它在我测试过的任何计算机上都不起作用,都带有不同类型的flash播放器(9、10、调试和非调试)你能解释一下我在你页面的链接中寻找的是什么吗?也许是一个显示错误的屏幕截图?我看不到你所指出的舍入。使用嗅探器,我发现以下操作失败-这就是你的意思吗?嘿,谢谢你的帮助,看看这张图片。这是我在每台计算机上看到的,但使用IE和Chrome everyt兴的作品完美,你看到的是正确的价值观而不是楠
trace(parseFloat(latStr)); //Outputs: "28.7242100786401";
trace(parseFloat(longStr)); //Outputs: "-106.12635420984";
trace(Number(latStr)); //Outputs: "28.7242100786401";
trace(Number(longStr)); //Outputs: "-106.12635420984";