Получить десятичную часть числа с помощью JavaScript - PullRequest
208 голосов
/ 22 декабря 2010

У меня есть числа с плавающей точкой, такие как 3.2 и 1.6.

Мне нужно разделить число на целое и десятичное число. Например, значение 3.2 будет разделено на два числа, то есть 3 и 0.2

Получить целую часть легко:

n = Math.floor(n);

Но у меня проблемы с получением десятичной части. Я пробовал это:

remainer = n % 2; //obtem a parte decimal do rating

Но это не всегда работает правильно.

Предыдущий код имеет следующий вывод:

n = 3.1 => remainer = 1.1

Что мне здесь не хватает?

Ответы [ 19 ]

4 голосов
/ 28 марта 2013

Вы можете преобразовать его в строку и использовать метод replace для замены целой части на ноль, а затем преобразовать результат обратно в число:

var number = 123.123812,
    decimals = +number.toString().replace(/^[^\.]+/,'0');
2 голосов
/ 15 января 2018

Вы можете использовать функцию parseInt() для получения целочисленной части, чем использовать ее для извлечения десятичной части

var myNumber = 3.2;
var integerPart = parseInt(myNumber);
var decimalPart = myNumber - integerPart;
1 голос
/ 22 февраля 2016

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

var number = 3.1,
    decimalAsInt = Math.round((number - parseInt(number)) * 10); // returns 1

Этохорошо работает и с целыми числами, возвращая в этих случаях 0.

1 голос
/ 10 ноября 2017

Я использую:

var n = -556.123444444;
var str = n.toString();
var decimalOnly = 0;

if( str.indexOf('.') != -1 ){ //check if has decimal
    var decimalOnly = parseFloat(Math.abs(n).toString().split('.')[1]);
}

Ввод: -556.123444444

Результат: 123444444

0 голосов
/ 10 июня 2019

Хотя я очень поздно отвечаю на этот вопрос, пожалуйста, посмотрите на код.

let floatValue = 3.267848;
let decimalDigits = floatValue.toString().split('.')[1];
let decimalPlaces = decimalDigits.length;
let decimalDivider = Math.pow(10, decimalPlaces);
let fractionValue = decimalDigits/decimalDivider;
let integerValue = floatValue - fractionValue;

console.log("Float value: "+floatValue);
console.log("Integer value: "+integerValue);
console.log("Fraction value: "+fractionValue)
0 голосов
/ 09 марта 2019

Математические функции работают быстрее, но всегда возвращают не собственные ожидаемые значения. Самый простой способ, который я нашел, это

(3.2+'').replace(/^[-\d]+\./, '')
0 голосов
/ 19 октября 2018
n = Math.floor(x);
remainder = x % 1;
0 голосов
/ 14 мая 2013
float a=3.2;
int b=(int)a; // you'll get output b=3 here;
int c=(int)a-b; // you'll get c=.2 value here
0 голосов
/ 17 апреля 2016

Посмотрев на некоторые из них, я теперь использую ...

var rtnValue = Number(7.23);
var tempDec = ((rtnValue / 1) - Math.floor(rtnValue)).toFixed(2);
...