【问题标题】:Javascript - Format number to always show the original decimal placesJavascript - 格式化数字以始终显示原始小数位
【发布时间】:2012-07-24 16:58:32
【问题描述】:

我需要一个 js 函数来显示数字的原始小数位数。例如:

value          display
2.31             2
1.0              1
2.3500           4

问题是我不知道如何计算小数。 我有那个代码: 值=2.3500; 返回 CountofDecimals(值); // 必须是显示 4:

有什么帮助???谢谢:P

【问题讨论】:

  • javascript 解析器会丢弃该信息,并且无法检索它

标签: javascript numbers format


【解决方案1】:

这是不可能的。在 JavaScript 或任何其他常见编程语言中,数字 3.53.50 之间没有区别。

如果您实际上是指它们是字符串(value = '2.3500' 而不是value = 2.3500),那么您可以使用indexOf

var decimalPlaces = value.length - value.indexOf('.') - 1;

【讨论】:

  • @user1549375:那就不可能了。 2.3500 在内部存储为 2.35,没有什么能给你正确的值。
  • 我的函数从 c# 接收数字,其他函数使用这个数字进行其他计算。所以我不能改变这个号码的类型。我将添加另一个字段,但字符串。谢谢大家。 :D
  • @user1549375:顺便说一句,您可以传递一个字符串并使用+value 将其转换为其他函数的数字。
【解决方案2】:

警告:我讨厌这个答案,我并不真正提倡它

不要将其存储为数字,将其存储为字符串。这可能会导致快速“字符串类型”代码,因此不可取。这是一种解决方法,因为 JavaScript 使用浮点数作为数字类型。

或者将其存储为 Object 并通过函数调用解析出格式:

{ value = "1.2345", decimal = 4} 

并使用它来创建正确的数字格式。如果我有要求,这可能是我会使用的 hack。或者,我会让我的服务器返回格式化的字符串,因为您可以轻松地将其从服务器端拉出来。

【讨论】:

  • 我的函数从 c# 接收数字,其他函数使用这个数字进行其他计算。所以我不能改变这个号码的类型。我将添加另一个字段,但字符串。谢谢大家。 :D
【解决方案3】:

如果可以将这些数字作为字符串,那绝对是可能的..实际上很简单。

function countDecimals(string){
   var delimiters = [",","."];
   for(var i = 0; i<delimiters.length; i++){

        if(string.indexOf(delimiters[i])==-1) continue;
        else{
        return string.substring(string.indexOf(delimiters[i])+1).length;
    }
 }
}

【讨论】:

  • 你不应该将for...in 与数组一起使用。
  • 这是一个不错的答案,为什么要投反对票?这可能不是最好的答案,但它解决了问题!
  • 对不起我的投票。我是新手。我怎么能投票+? :(
  • @user1549375:你还不能,你需要 15 声望(别担心,这并不难)。复选标记是正确答案,只能放在一个答案上。
  • mmmm 和箭头之间的数字? :D
【解决方案4】:

你可以使用这个功能:

function decimalplaces(number)
{
    numberastring = number.toString(10);
    decimalpoint = numberastring.indexOf(".");

    if(decimalpoint == -1)
    {
       return 0;
    }
    else
    {
        return numberastring.length - decimalpoint - 1;
    }
}

【讨论】:

  • 那是因为 javascript 会自动删除多余的零。我对此无能为力。
  • @simekadam 它需要一个数字或一个字符串。顺便说一句,你为什么需要额外的零?
  • 是的,它需要..但是当参数作为字符串传递时它可以工作..而且我不需要额外的零..但这是问题的一部分
  • 当你作为字符串传递时它会起作用,因为 Javascript 不会删除字符串上多余的零。
猜你喜欢
  • 2011-09-02
  • 2011-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多