Как разбить десятичную по ее точке на целые числа с помощью JavaScript? - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть следующий код;

var looptijd_1 = de_snelheid * de_afstand;
var split_looptijden_1 = new Array();
split_looptijden_1 = looptijd_1.split('.');

Как видите, идея очень проста. Я хочу разделить число по его точке. Так что, если число 69.07, я хочу переменную с 69 и переменную с 07.

Я знаю, что должен составить строку переменной и разделить ее, но мне нужно 07 как 07, а не 7 (потому что у меня есть математика).

Я знаю, что могу взять первое значение и сохранить его, затем переменную - хранимую переменную, поэтому у меня есть 0.07, но я надеюсь, что есть лучший способ добиться этого, потому что это должно быть сделано 12 раз на странице.

Есть ли лучший способ достичь моей цели (variable1 = 69; variable2=07) и обоих целых чисел?

EDIT; Все дело в том, что это математика о времени ходьбы ... И нет постоянных переменных, так что я их обозначаю, и затем я хотел бы сделать трюк (числа после точки * 60)

Ответы [ 8 ]

8 голосов
/ 01 февраля 2012

Если вы хотите выполнить вычисления с результатами, то нет необходимости преобразовывать ваше число в строку, разбивать ее, а затем преобразовывать полученные строки обратно в числа.Вместо этого используйте некоторые базовые математические выражения:

var split_looptijden_1 =
    [
        (looptijd_1 > 0) ? Math.floor(looptijd_1) : Math.ceil(looptijd_1),
        looptijd_1 % 1
    ];
2 голосов
/ 28 августа 2013
This is my assumption:

Convert your decimal number into string and then split it using .split() method then store the result into an array.

var num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=new Array();
a=numarray;
console.log(a[0]);
console.log(a[1]);

попробуйте с приведенным ниже примером, вы получите желаемый результат. Если console.log () не работает

its working fine for me.

Demo:

<!DOCTYPE html>
<html>
<body>

<p id="demo">Integer Part</p>
<p id="demo1">Decimal Part</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction()
{

var num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=new Array();
a=numarray;


var x = document.getElementById("demo");
var y = document.getElementById("demo1");
x.innerHTML=a[0];
y.innerHTML=a[1];
}demo1
</script>

</body>
</html>
0 голосов
/ 02 марта 2013

Плюсы:

  • Это решение не использует «первое значение» (67) при расчете «второго» (0,07). (Слова, использованные в оригинальном плакате, в "")

  • Также избегает сохранения 0,06999999999999318 вместо 0,07 с использованием коэффициента 1000. Увеличьте коэффициент, например, до. 10000 для обработки, например 0,007. (* 10 для каждой дополнительной цифры)

  • Работает, как и ожидалось, для отрицательных значений. Без округления или преобразования.

Примечание: это решение игнорирует запрос "07", который был просто частью неоптимального решения, смешанного с ответом.

variable1 = looptijd_1|0;                // = 69 as number. No rounding.
variable2 = (looptijd_1*1000%1000)/1000; // = 0.07 as number. Simple form: x % 1 

Помимо решения:

Вы сказали, что вам нужно сделать это 12 раз на одной странице. Но вы не сказали, беспокоит ли вас время, необходимое для вычисления или загроможденного кода. Или оба.

Эти простые вычисления можно игнорировать в 12 раз.

0 голосов
/ 01 февраля 2012

Невозможно сохранить целое число с ведущими нулями.

Попытка:

var looptijd_1 = de_snelheid * de_afstand;
var split_looptijden_1 = looptijd_1.toString().split('.');

Это преобразует целочисленные значения в строки, сохраняя, таким образом, 07 вместо 7.

0 голосов
/ 01 февраля 2012

Вам не нужно создавать массив. Сплит делает это автоматически.

var looptijd_1 = de_snelheid * de_afstand + "";
var split_looptijden_1 = looptijd_1.split('.');
0 голосов
/ 01 февраля 2012

Вы должны сначала преобразовать число в строку:

split_looptijden_1 = looptijd_1.toString().split('.');
0 голосов
/ 01 февраля 2012

Это должно сделать то, что вам нужно

var looptijd_1 = de_snelheid * de_afstand;
var split_looptijden_1 = new Array();
split_looptijden_1 = (looptijd_1+"").split('.');
0 голосов
/ 01 февраля 2012

Сделайте число строкой (это число на данный момент, которое не может быть split), затем разделите его:

var split_looptijden_1 = looptijd_1.toString().split('.');
console.log(split_looptijden_1[0]); // 69
console.log(split_looptijden_1[1]); // 07

Обратите внимание, что new Array() не является необходимым.split все равно возвращает новый массив;тот, который вы создали, перезаписан.Поскольку Javascript использует статическую типизацию, вам не нужно объявлять тип переменной.Также обратите внимание, что если вы хотите целые числа, вам придется забыть начальные нули.Если вам нужен определенный способ форматирования символов, это называется строкой.

...