Kendo Number Formattig对于不需要的零

时间:2016-06-22 02:44:35

标签: javascript html kendo-ui formatting

我希望过滤我的kendo.toString来敲掉不需要的零,留下最小两位小数和最多4位小数。例如......

  • 25.7670将呈现为25.767
  • 250将呈现为250.00
  • 25.7080将呈现为25.708
  • 25.000将呈现为25.00

我的实际标记是

<li><label>Flagfall:</label>$#= (Flagfall == null) ? '0.00' : kendo.toString(Flagfall, "n4") #</li>

3 个答案:

答案 0 :(得分:1)

我已根据您提供的示例测试了我的提案。我已根据数字对其进行了测试。如果你有一个包含数字的字符串,那么就像使用它一样:

  <ReportData>
  <Columns>
  <Column>Name</Column>
  <Column>UserName</Column>
  <Column>Remarks</Column>
  <Column>IP Address</Column>
  <Column>Date Created</Column>
  <Column>APP ID</Column>
  <Column>App Version</Column>
  <Column>Last Loggedin</Column>
  </Columns>
  <Rows>
  <Row>
  <Cell>123</Cell>
  <Cell>0.0.0.0</Cell>
  <Cell>2016-02-24T18:32:11.803</Cell>
  <Cell>AOS</Cell>
  <Cell>0.0.3.0</Cell>
  <Cell>2016-05-30T15:25:05.880</Cell>
  </Row>
  <Row>
  <Cell>123</Cell>
  <Cell>0.0.0.0</Cell>
  <Cell>2016-02-25T10:22:34.623</Cell>
  <Cell>BOS</Cell>
  <Cell>0.0.3.0</Cell>
  <Cell>2016-05-30T15:25:05.880</Cell>
  </Row>
  </Rows>
  </ReportData>

无论如何,这是解决方案:

var result = convert(+string);

该函数返回一个字符串。如果你想要它是数字,只需在它之前放+,如:

var x = 25.000;
function convert(value) {
    let [a, b] = ('' + value).split(/\./);
    b = b? b.replace(/([0-9]{2}[1-9]*9+)/, '$1') : '00';
    return a + '.' + b;
}
console.log(convert(25.7670));
console.log(convert(250));
console.log(convert(25.7080));
console.log(convert(25.000)); // same as 25, honestly

或者如果您更喜欢/需要旧的Javascript版本:

var result = +convert(your_number_here);

答案 1 :(得分:0)

您可以编写自定义的javascript函数,例如

var isInt = function(n) { return parseInt(n) === n };

function format(num){
  if(isInt(num)){
    return Number(num).toFixed(2);
  }else{
    return Number(num).toFixed(3);
  }
}

console.log(format(25.7670));

实现这一目标。

答案 2 :(得分:0)

您的格式字符串可以更改为kendo.toString(Flagfall, "#.00##")0占位符表示要填充的所需插槽,而#占位符表示可选位置。剑道似乎很好地处理了这个问题:

&#13;
&#13;
var numbers = [42, 42.0, 0, 0.01, 0.0003, 5.2, 4.12351, 4.12355],
  template = "kendo.toString(num, '#.00##')"
  tpl = kendo.template("Number: #= num #\t- #= " + template.replace(/#/g, "\\\\#") + "#  \t Formatted\n"),
  $text = $("#text");

numbers.forEach(function(num) {
  $text.val($text.val() + tpl({
    num: num
  }));
});
&#13;
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://kendo.cdn.telerik.com/2016.2.607/js/kendo.all.min.js"></script>

<textarea id="text" style="height: 10em; width: 30em;"></textarea>
&#13;
&#13;
&#13;

如果您使用的是Kendo Numeric Textbox,则可以将format stringdecimals属性结合使用。

&#13;
&#13;
$("#numerictextbox").kendoNumericTextBox({
  format: "#.00##",
  decimals: 4
});
&#13;
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.common.min.css" />
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.silver.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://kendo.cdn.telerik.com/2016.2.607/js/kendo.all.min.js"></script>

<input id="numerictextbox" />
&#13;
&#13;
&#13;