我跑进是在iOS 6的问题是在格式化给定值的价格的功能在移动Safari浏览器只复制一个非常非常非常奇怪的JS问题,通过剥离下来到2位小数的数量,并增加了对货币数的前面。 下面是功能。 我稍后会解释如何重现bug。
formatCurrency = function(value, currency, fixedPrecision, colourize, blankIfZero) {
var text;
if (blankIfZero && (Math.abs(value) < 0.01 || value === undefined)) {
return "";
}
if (fixedPrecision) {
text = currency + Math.abs(value).toFixed(2);
} else {
text = currency + roundTo2Decimals(Math.abs(value));
}
if (value < 0) {
text = "-" + text;
}
if (colourize) {
var colorClass = (value < 0 ? "negative" : "positive");
text = "<span class='" + colorClass + "'>" + text + "</span>";
}
return text;
};
roundTo2Decimals = function(value) {
var sign = value < 0 ? -1 : 1;
return Math.round(Math.abs(value) * 100.0)/100.0 * sign;
};
如果我一遍又一遍地运行的formatCurrency功能同样具有相同的值(例如一个的setInterval内)(可以说值= 1;和货币=“GBP”),你会发现每800-1000迭代一次由价值回归该函数包含一个负数:GBP1代替GBP1。 我没发现JS函数中的任何问题,这个问题很烦人。
管理我要解决这个问题......但我很好奇的是这个实现的问题。 [编辑:“ - ”从字符“roundTo2Decimals(Math.abs(值))”我通过删除固定的问题。 但“ - ”字符不应出现在首位。 因此,修复实际上是一个解决办法。]
我缺少的东西吗?