const findFraction = (num) => {
return parseInt( // 5.---------------- And finally we parses a "string" type and returns an integer
// 1. We convert our parameter "num" to the "string" type (to work as with an array in the next step)
// result: "1.012312"
num.toString()
// 2. Here we separating the string as an array using the separator: " . "
// result: ["1", "012312"]
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
.split('.')
// 3. With help a method "Array.splice" we cut the first element of our array
// result: ["012312"]
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
.splice(1.1)
// 4. With help a method "Array.shift" we remove the first element from an array and returns that
// result: 012312 (But it's still the "string" type)
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
.shift()
)
}
// Try it
console.log("Result is = " + findFraction (1.012312))
// Type of result
console.log("Type of result = " + typeof findFraction (1.012312))
// Some later operation
console.log("Result + some number is = " + findFraction (1.012312) + 555)
9条答案
按热度按时间baubqpgj1#
n7taea2i2#
虽然这不是大多数人想要的,但TS要求分数作为整数,这里是:
bf1o4zei3#
这将做到这一点(最多4位,你想要的,改变乘数(10000),以更大或更小,如果你想要更小或更大的数字):
bz4sfanl4#
第一个月
5m1hhzi45#
您可以减去数字的下限,得到小数部分,然后乘以10000,即:
7fyelxc56#
我认为,假设我们想把这些值显示给用户,把这些数字当作字符串是最好的方法,这就避开了0.002这样的小数值的问题。
我遇到了这个问题时,试图显示价格与美分在上标。
puruo6ea7#
这还取决于您要如何处理剩余部分例如,如果基数是1.03,您希望返回的余数是3还是03 --我的意思是,您希望它是数字还是字符串(为了将其显示给用户)。一个例子是商品价格显示,在不想将03转换为3的地方(例如$1.03),您想在03上标。
接下来,问题是浮点精度,考虑一下:
因此,在这种情况下,你可以通过对字符串表示进行切片而不使用乘法(和可选的零填充)来“解决”这个问题。同时,你可以避免浮点精度问题。同样在this jsfiddle中演示。
关于浮点精度的This post和this one可能同样有帮助。
kqhtkvqz8#
93ze6v8z9#
@乌达拉·塞纳维拉特纳