Как избежать отрицательных значений 0 или -0 в JavaScript - PullRequest
0 голосов
/ 24 октября 2019

Я пытался использовать toString() и побитовый оператор |, но я хотел бы использовать точность и строковый вывод. Как упоминалось @ trincot , это вызвано значением точности, например, -0,45 приведет к -0. У меня есть код здесь.

typeof predictedHours //number e.g. -0.45
precision = 0
value={predictedHours.toFixed(precision)}
typeof value //string e.g. "-0"

Вопрос - есть ли один вкладыш для преобразования -0 в 0 в этой строке - value={predictedHours.toFixed(precision)}?

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Я не знаю особо чистого способа сделать это, но всегда есть:

value={predictedHours.toFixed(precision).replace('-0', '0')}
0 голосов
/ 24 октября 2019

Я думаю, что предложение @ trincot лучше, чтобы избежать преобразования десятичных знаков, таких как -0.48.toFixed(2), в положительные. Мне понадобилось время, чтобы понять регулярное выражение. Просто небольшое предостережение: из-за приоритета оператора отрицательные числа остаются отрицательными, если toFixed заключен в квадратные скобки. Некоторые примеры здесь:

-0.001.toFixed(2).replace(/^-0$/, "0")
//0 '0'

console.log((-0.48).toFixed(0).replace(/^-0$/, '0')); Correct
//-0 '0'

console.log((-0.48).toFixed(2).replace(/^-0$/, '0')); Correct
//-0.48 '-0.48'

console.log(-0.48.toFixed(0).replace(/^-0$/, '0'));
//0 '0'

console.log(-0.48.toFixed(2).replace(/^-0$/, '0'));
//-0.48 '-0.48'

Также посмотрите примеры здесь - toFixed ()

...