微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FLEX XMLDecoder将“ 09.00”变为“ 09.00”,而将“ 10.00”变为10

如何解决FLEX XMLDecoder将“ 09.00”变为“ 09.00”,而将“ 10.00”变为10

|| 有人可以解释为什么FLEX 4.5 XMLDecoder对我的XML数据这样做吗?
var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>08.00</xmltag> );
// object = \"08.00\"

var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>11.00</xmltag> );
// Object = \"11\" (hey! Where did my \'.00\' part of the string go?)

var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>11.30</xmltag> );
// Object = \"11.3\" (hey! Where did my \'0\' part of the string go?)
    

解决方法

        Flex解​​串器也给我带来了问题。可能将它们解释为Number对象,因此在调用toString()时它们将返回简短表示形式。 每当需要打印
11.00
之类的值时,尝试使用
.toFixed(2)
var $object:Object = decoder.decode( <xmltag>11.00</xmltag> );
trace($object); //11
trace($object.toFixed(2)); //11.00
    ,        因此,要回答为什么会这样的原始问题: 在SimpleXMLDecoder的源代码(我想它的功能与XMLDecoder类似)中,在函数simpleType()中有一条注释:
//return the value as a string,a boolean or a number.
//numbers that start with 0 are left as strings
//bForceObject removed since we\'ll take care of converting to a String or Number object later
以0开头的数字保留为字符串-我想他们想到的是电话号码,而不是小数。 此外,由于某些隐含的强制转换,您实际上具有三种不同的类型- \“ 0.800 \”:字符串 11:int 11.3:数字     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。