是否有一种可靠的方法来计算Erlang中float的小数点后的位数?

时间:2013-10-09 23:35:13

标签: erlang

我希望能够找到 可靠的 方法来计算传递给函数的浮点值小数点后的有效位数在Erlang。假设所需函数的名称为counter,它的行为应如下所示:

counter(3.14) => 2
counter(3.00001) => 5
counter(3.10000) => 1

谢谢大家。


更新:由于浮点数表示的性质,这个问题极不可能解决。

2 个答案:

答案 0 :(得分:2)

确实没有可靠的方法来做到这一点。浮动是基数为2的数字。你问一个关于它们的有限长度10的表示的问题。对于大多数小数,不存在精确的基数2浮点表示。我们可以猜测,就像系统将它们格式化为字符串或输出一样。但可证明,它们都不是永远正确的。

答案 1 :(得分:1)

的伪代码,

  • 转换为所需的字符串表示形式。
  • 检查小数点?缺席,返回0
  • 将最右边的零点修剪到小数点右边。
  • 计算小数点右边的剩余字符