我使用“敲除”来显示数值如下:
<td class="right"><span data-bind="numericTextWithoutNumericSeparator: Volume, precision: 4"></span></td>在js文件中,我有以下内容:
ko.bindingHandlers.numericTextWithoutNumericSeparator = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
precision = ko.utils.unwrapObservable(allBindingsAccessor().precision) || ko.bindingHandlers.numericText.defaultPrecision,
formattedValue = value.toFixed(precision);
ko.bindingHandlers.text.update(element, function () { return formattedValue; });
},
defaultPrecision: 2
};但是我需要用两个小数位来表示数字,如果最后两个小数位数是零,其他数字是4个小数位数。
下面是一个例子:
1.1234 -> 1.1234
1.1200 -> 1.12
1.1350 -> 1.1350
1.0000 -> 1.00我应该如何处理我的js文件才能实现这一点?
编辑:--我编辑了js文件如下:
ko.bindingHandlers.numericTextWithoutNumericSeparator = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
precision = function () {
if (value % Math.round(value, 2) == 0) {
return 2;
} else {
return 4;
}
},
formattedValue = value.toFixed(precision);
ko.bindingHandlers.text.update(element, function () { return formattedValue; });
}
};但是把四舍五入的数字提高到0位数。
发布于 2017-06-13 13:57:19
precision是一个函数,但是当您调用它时,忽略了括号
formattedValue = value.toFixed(precision());发布于 2017-06-13 13:52:31
你可以试试这样的方法:
function shortNumber(number, precision) {
var short = number.toFixed(precision)
short = short + new Array(precision - short.split('.')[1].length + 1).join(0)
return (short == number ? short : number)
}
https://stackoverflow.com/questions/44522785
复制相似问题