В Javascript числа с только двойными нулями на десятичном месте теряли двойной ноль при преобразовании в строку? Почему? - PullRequest
1 голос
/ 04 апреля 2020

Я занимаюсь разработкой веб-приложения, в котором мне нужно объединить несколько чисел в формате String

Для одного из чисел требуется 00 в десятичном формате, если это целое число (например, 15,00)

Но когда я сопоставляю его с другим номером, 00 теряется (например, 15.00 => 15)

Пример:

const price = 15.00;
const period = 3;
const CC = 840;

const concated = `${price}${period}${CC}`;
console.log(concated);
const saltedHash = crypto.createHash('md5').update(`${concated}GhVT+6FySEgWVeUWCHLo2lks`).digest('hex');

post[0].saltedHash = saltedHash;
post[0].string = `${concated}GhVT+6FySEgWVeUWCHLo2lks`;

Теперь проблема в том, что константа concated содержит 153840 вместо 15.003840

Почему возникает эта проблема?

Как сохранить 00?

1 Ответ

1 голос
/ 04 апреля 2020

Вы можете достичь этого, используя toFixed(), что-то вроде:

const concated = `${price.toFixed(2)}${period}${CC}`;

const price = 15.00;
const period = 3;
const CC = 840;

const concated = `${price.toFixed(2)}${period}${CC}`;
console.log(concated);

Проблема заключается в том, что при использовании литерала шаблона он преобразует число в строку, то есть String(15) === "15", тогда как при выполнении 15..toFixed(2) он «возвращает строку, представляющую число в записи с фиксированной запятой».

Таким образом, 15..toFixed(2) === "15.00", то есть typeof 15.00.toFixed(2) === "string"

...