在KnockOut中将小数转换为整数

时间:2016-05-19 09:26:53

标签: knockout.js knockout-validation knockout-mvc

var amount = vm.AMOUNT();

以上语句带小数点,我需要将此语句转换为Interger。(不带小数点)

1 个答案:

答案 0 :(得分:4)

从您的评论中我得到的印象是,链接到之前类似问题的答案可能无法帮助您。所以,为了清楚起见:

原始问题

  

我需要将此语句转换为Interger [sic]

Javascript没有区分整数和浮点数;只有Numberread more on MDN

有很多方法可以从数字中删除小数。例如:您可以使用Math.round()Math.ceil()Math.floor()(如果您想从 n 转到 0 小数)。< / p>

var amount = vm.AMOUNT();
var roundedAmount = Math.round(amount); // As close as you'll get to an 'Integer'

评论#1

  

我在淘汰赛中问这不是在Jquery或Javascript中

jQuery和knockout是javascript库。诸如Math.round之类的函数在javascript规范中,无论您包含哪些库,都可以使用。

评论#2

  
    

您可以使用前一个链接中的敲除扩展程序中提供的方法:knockoutjs.com/documentation/extenders.html查看“实例1” - 我

  
     

它没有说浮动到整数 - 你

我试图指出一个解决方案,该解决方案符合一种适用于淘汰赛的编码方式。

var amount = vm.AMOUNT();

对我来说,似乎vm.AMOUNT是一个可以观察到的值,你设置了你不想要的值(即:小数点太多)。

如果要控制observable可以包含的值类型,可以使用extender。这使您可以转换用于设置AMOUNT值的任何值。如果你需要十进制值和舍入值,这是另一种方法:

var roundedAmount = ko.computed(function() {
    return Math.round(vm.AMOUNT());
});

vm.AMOUNT(12.34);

console.log(roundedAmount()); // Logs: 12