Erlang - вопрос математики и кода - PullRequest
2 голосов
/ 10 февраля 2011

Это очень маленький математический вопрос, и, скорее, вопрос о наиболее эффективном и элегантном способе.

Если я даю целое число, например

1.50

or

1.22

or

10.99

Как я могу получитьизбавьтесь от числа слева от десятичной дроби и выведите правую часть в виде целого числа или числа с плавающей запятой, например

.50  or 50

.22 or 22

.99 or 99

Важно, какой это самый быстрый способ сделать это.Я бы предпочел не превращать его в строку, если это возможно.

Спасибо за помощь.

BR

Ответы [ 2 ]

5 голосов
/ 10 февраля 2011

Прежде всего, 1,50 - это не целое число, это число с плавающей точкой.Если есть десятичная дробь, это не целое число.Тем не менее, вы можете получить две цифры после десятичной точки следующим образом:

Precision = 100.
Value = 1.50.
Decimal = trunc(Value * Precision) rem Precision.

Если вам нужно больше цифр, измените переменную точности.

3 голосов
/ 10 февраля 2011

Один путь через trunc(Number):

1> X = 10.23 .
10.23
2> Y = X - trunc(X) .
0.23000000000000043

% To get an integer out of the float, you can use `trunc` twice, but you'll have
% to adjust your number first ...

3> Precision = 100 . 
100
4> Z = trunc(Y * Precision) .
23

% In one statement:

5> Z = trunc((X - trunc(X)) * Precision) .
...