Erlang - 数学和代码优雅问题

时间:2011-02-10 07:32:59

标签: parsing math erlang integer floating-point

这是一个非常微小的数学,更多的是最有效,最优雅的方式。

如果我给出一个整数,如

1.50

or

1.22

or

10.99

如何摆脱小数点左边的数字,输出右边的整数或浮点数,例如

.50  or 50

.22 or 22

.99 or 99

重要的是,最快的方法是什么。如果可能的话,我宁愿不把它变成一个字符串。

感谢您的帮助。

BR

2 个答案:

答案 0 :(得分:5)

首先,1.50不是整数,它是一个浮点数。如果有小数,则不是整数。也就是说,您可以得到小数点后的两位数字:

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

如果需要更多数字,请更改精度变量。

答案 1 :(得分:3)

一种方法是通过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) .