Как преобразовать целое число в число с плавающей точкой в ​​JavaScript? - PullRequest
19 голосов
/ 27 ноября 2010

У меня есть целое число (например, 12 ), и я хочу преобразовать его в число с плавающей запятой с указанным десятичным числоммест.

осадка

function intToFloat(num, decimal) { [code goes here] }
intToFloat(12, 1) // returns 12.0
intToFloat(12, 2) // returns 12.00
// and so on…

Ответы [ 3 ]

35 голосов
/ 27 ноября 2010

То, что у вас есть, уже является числом с плавающей точкой, все они являются 64-битными числами с плавающей точкой в ​​JavaScript.

Чтобы получить десятичные разряды при рендеринге (в виде строки, для вывода), используйте .toFixed(), например:

function intToFloat(num, decPlaces) { return num.toFixed(decPlaces); }

Вы можете проверить это здесь (хотя я бы переименовал функцию, учитывая, что это не точное описание).

3 голосов
/ 28 июля 2014

toFixed (x) не является пересеченным браузерным решением.Полное решение следующее:

function intToFloat(num, decPlaces) { return num + '.' + Array(decPlaces + 1).join('0'); }
1 голос
/ 22 января 2018

Если вам не нужно (или вы не уверены в этом) фиксированное количество десятичных разрядов, вы можете просто использовать

xAsString = (Number.isInteger(x)) ? (x + ".0") : (x.toString());

Это актуально в таких контекстах, как, например, у вас есть x как 7.0, но x.toString() даст вам "7", а вам нужна строка как "7.0". Если x оказывается значением с плавающей запятой, например, скажем 7.1 или 7.233, тогда строка также должна быть "7.1" или "7.233" соответственно.

Без использования Number.isInteger ():

xAsString = (x % 1 === 0) ? (x + ".0") : (x.toString());
...