我有一个浮点数:
var f = 0.1457;
或者:
var f = 4.7005
如何将分数余数作为整数?
即。在我想得到的第一个例子中:
var remainder = 1457;
在第二个例子中:
var remainder = 7005;
答案 0 :(得分:81)
function frac(f) {
return f % 1;
}
希望有所帮助; - )
答案 1 :(得分:5)
这样做(最多可达4个数字,如果想要更小或更大的数字,可将倍数(10000)更大或更小):
Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)
答案 2 :(得分:5)
虽然这不是大多数人想要的,但是TS要求fract为整数,这里是:
function fract(n){ return Number(String(n).split('.')[1] || 0); }
fract(1.23) // = 23
fract(123) // = 0
fract(0.0008) // = 8
答案 3 :(得分:3)
您可以减去数字的下限,只给出小数部分,然后乘以10000,即:
var remainder = (f-Math.floor(f))*10000;
答案 4 :(得分:2)
parseInt(parseFloat(amount).toString().split('.')[1], 10)
答案 5 :(得分:1)
这还取决于你想要对其余部分做什么(正如已经提到的评论者)。例如,如果基数为1.03,您是否希望返回的余数为3或03 - 我的意思是,您希望将其作为数字还是字符串(以便将其显示给用户)。一个例子是文章价格显示,你不想在03到3(例如$ 1.03)汇总你想要上标03。
接下来,问题在于浮点精度。考虑一下:
var price = 1.03;
var frac = (price - Math.floor(price))*100;
// frac = 3.0000000000000027
所以你可以通过在没有乘法(和可选的零填充)的情况下切片字符串表示来“解决”这个问题。同时,您避免浮动精度问题。也在this jsfiddle中进行了演示。
关于浮动精度的答案 6 :(得分:1)
我认为,假设我们想要向用户显示这些值,将这些数字视为字符串将是最好的方法。这绕过了小数值的问题,例如0.002。
当我试图用上标中的美分显示价格时,我遇到了这个问题。
let price = 23.43; // 23.43
let strPrice = price.toFixed(2) + ''; // "23.43"
let integer = strPrice.split(".")[0] // "23"
let fractional = strPrice.split(".")[1] // "43"
答案 7 :(得分:0)
var strNumber = f.toString();
var remainder = strNumber.substr(strNumber.indexOf('.') + 1, 4);
remainder = Number(reminder);
答案 8 :(得分:-1)
@Udara Seneviratne
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)