如何从浮点数中得到一个分数?

Ric*_*nop 21 javascript jquery

我有一个浮点数:

var f = 0.1457;
Run Code Online (Sandbox Code Playgroud)

要么:

var f = 4.7005
Run Code Online (Sandbox Code Playgroud)

如何将分数余数作为整数?

即在第一个例子中我想得到:

var remainder = 1457;
Run Code Online (Sandbox Code Playgroud)

在第二个例子中:

var remainder = 7005;
Run Code Online (Sandbox Code Playgroud)

小智 82

function frac(f) {
    return f % 1;
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助;-)

  • 不适用于负数 (5认同)
  • @avi,`%` 是 [模运算](http://en.wikipedia.org/wiki/Modulo_operation),任何数除以 1 的余数是该数的小数部分。 (2认同)
  • 想知道这是否被投票通过 - 它工作不可靠。a = 34.5697;分形部分 = a % 1; 警报(fracPart);// 0.5696999999999974 (2认同)
  • 我不明白为什么这个答案被否决了。它不返回请求的结果,“小数余数为整数”。例如,对于4.7005,它将返回0.7005,而不是7005。此答案是一个好的开始,但还不正确。 (2认同)
  • @LarsH - 人们从谷歌登陆这个页面寻找获得JS中数字的一小部分.在这种情况下,问题的细节在很大程度上是无关紧要的. (2认同)
  • @infografnet,这看起来像是浮点数的正常错误。他们有一些令人惊讶的特征。:) (2认同)

Jim*_*dra 6

这样做(最多可达到你想要的4位数,如果你想要更小或更大的数字,可以将乘数(10000)更大或更小):

Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)
Run Code Online (Sandbox Code Playgroud)

  • 虽然这个解决方案是TS想要的,但这不是他在主题中提出的问题,显然也不是其他人来这里会想要的. (2认同)

met*_*lim 6

虽然这不是大多数人想要的,但是TS要求fract为整数,这里是:

function fract(n){ return Number(String(n).split('.')[1] || 0); }
fract(1.23) // = 23
fract(123) // = 0
fract(0.0008) // = 8
Run Code Online (Sandbox Code Playgroud)