2016-10-27 2 views
0

Мне нужно ввести значение, вводимое пользователем, и заставить его до шести знаков после запятой, даже если это целое число. Например, пользователь вводит в 12, мне нужно преобразовать это значение в 12.000000, в виде номера. Это не для отображения целей - система на другом конце моего приложения требует десятичных значений, и я ничего не могу с этим поделать.Принудительное десятичное значение, даже в целых числах, в Javascript

Как я читал в другом месте, цифры в Javascript - это все 64-битные числа с плавающей запятой, поэтому не похоже, что это должно быть так сложно.

Увы, toFixed здесь не вариант, потому что это дает мне строковое значение '12.000000'. Каждый трюк, который я попробовал, просто дает целое число 12 без десятичных нулей (например, обертывание toFixed с Number, разделив значение строки на 1 и другую такую ​​глупость).

Возможно ли представлять целое число как float в Javascript, не заканчивая строковым значением?

ОБНОВЛЕНИЕ
Спасибо за все комментарии и ответы. К сожалению, для меня комментарий @ Enzey действительно отвечает на мой основной вопрос, когда он сказал, что форсировать точность можно только со строкой. Если он представит это в качестве ответа, я приму это. Я детализировал свою реализацию целенаправленно неопределенно, потому что я не хотел вникать в то, почему я хотел делать то, что я делаю, я просто хотел узнать, возможно ли это. Но я думаю, что я просто запутался в людях. Извини за это.

+0

сделать вам нужно это для строки json? –

+3

Неясно, что вы подразумеваете под «другим концом моего приложения, которое требует десятичных значений», что это такое? Как вы отправляете номер этому «другому концу» системы? JSON и отправлен через провод? Глядя на другие языки, такие как Java или C#, numbe rs '12.0' и' 12.000' идентичны. Не знаете, как вы могли бы заставить точно 6 цифр точности ... – CodingWithSpike

+0

На самом деле ... если вы имеете дело с введенными пользователем значениями, вы просто пропускаете '.parseFloat()' на входной строке? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat Возможно, вы просто непреднамеренно отправили его на бэкэнд в виде строки? – CodingWithSpike

ответ

1

Увы, нет такой вещи, как float или int в JavaScript. У вас есть только Number, который не имеет ни малейшего понятия о разнице между 12 и 12.000000.

+0

'разница между 12 и 12.000000' да, в большинстве других языков один будет int, другой - float (некоторого описания). Тем не менее, если честно, даже тогда плавающие не будут различать «12.0» и «12.000000». Я вообще не знаю ни одного языка, учитывающего десятичные нули, когда эти значения хранятся как примитивные числовые значения. Однако пользовательские объекты или строки могут их представлять. – vlaz

0

Если вы отправляете его в качестве строкового JSON, вы можете использовать .toFixed по количеству, а затем раздеть "знаки из чисел в строковом формате JSON:

var result = JSON.stringify({ 
 
    number: (12).toFixed(6) 
 
    }) 
 
    .replace(/"[\d]+\.\d{6}"/g, function(v) { 
 
    return v.replace(/"/g, ''); 
 
    }); 
 

 
console.log(result);

+0

Это сильно меня пугает. Это отлично работает, пока не ударит что-то, что соответствует выражению, но на самом деле должно быть строкой. Например, любое значение ввода вручную вручную. – Enzey

+0

Однако, поскольку вы знаете, что число десятичных знаков равно 6, и это число в строковом формате, вы можете настроить свое регулярное выражение специально для этого случая. Кроме того, я не думаю, что у него есть другой вариант, кроме как «построить JSON в качестве строки вручную ... бог поможет вам» один :) –

+0

Я не сказал, что вы ошибались, просто идея, что это нужно страшно. JSON необходимо наложить на некоторый уровень из-за требований к синтаксическому анализу. На самом деле проблема должна быть решена. – Enzey

Смежные вопросы