Я хочу преобразовать целое число в дробную часть числа с помощью javascript.Каков наиболее эффективный способ преобразования целого числа в дробную часть числа в javascript?
Например:
10030 -> 0,10030
123 -> 0,123
Я придумал два способа сделать это:
var convertIntegerPartToFractionalPart1 = function(integerPart) {
var fractionalPart = integerPart;
while(fractionalPart > 1) {
fractionalPart = fractionalPart/10;
}
return fractionalPart;
};
var convertIntegerPartToFractionalPart2 = function(integerPart) {
return parseFloat('.' + integerPart);
};
convertIntegerPa rtToFractionalPart1 не дает 100% точных результатов, например 132232 преобразуется в 0.13223200000000002. Однако convertIntegerPartToFractionalPart1 более чем в два раза быстрее, чем convertIntegerPartToFractionalPart2 под node.js на моем MacBook Pro. (1000000 прогонов convertIntegerPartToFractionalPart1 заняло 46 мс, 1000000 прогонов convertIntegerPartToFractionalPart2 заняло 96 мс)
Есть ли лучший способ сделать это?
Наблюдение в методе 1 будет ясно после прочтения [Что каждый ученый должен знать о арифметики с плавающей точкой] (http://www.cse.msu.edu/~cse320/Documents/ FloatingPoint.pdf) – devnull
Вы можете сделать что-то вроде: 'factionalPart = integerPart/(10^ceil (log10 (integerPart)))' [обратите внимание, что это псевдокод, так как вам придется выполнять свою собственную функцию log10 на основе естественного входа в javascrit и использовать 'Math.' для вызовов lib]. Я подозреваю, в конце концов, это будет не так хорошо, как ваш вариант 1. Таким образом, мой голос будет вариантом 1, если вам больше нужно время и вариант 2, если вы заботитесь о том, чтобы результат был совершенным. :) – lurker
@devnull Спасибо за ссылку. – alexbirkett