# [erlang-questions] Strange float / tuple problem

Donald Steven t6sn7gt@REDACTED
Mon Jun 6 16:02:51 CEST 2016

```This is most helpful.   Thanks Craig.

Don

On 06/05/2016 12:25 AM, zxq9 wrote:
> On 2016年6月5日 日曜日 13:11:30 zxq9 wrote:
>> On 2016年6月4日 土曜日 10:07:11 Donald Steven wrote:
>>> Thanks Matthias and Craig.  I see the issue and I've got a work around.
>>> BTW, is there a way to truncate a float to a given # of places, not just
>>> 0 -- not just a formatted output, but a true truncation?
>> approximate(Precision) ->
>>      fun(Z, Z) -> true;
>>         (Z, Q) -> (Z - Precision =< Q) and (Q =< Z + Precision)
>>      end.
> I forgot to mention something... in your particular case you may really
> be wanting to convert to a specific value instead of just compare, in that
> case a small change is more direct:
>
> force_fit(Precision) ->
>      Approx = approximate(Precision),
>      fun(Z, Q) ->
>          case Approx(Z, Q) of
>              true  -> Z;
>              false -> Q
>          end
>      end.
>
> 1> Rough = numbers:force_fit(0.00001).
> #Fun<numbers.1.117927507>
> 2> Rough(0.0, 4.440892098500626e-16).
> 0.0
> 3> Rough(0.0, 0.1).
> 0.1
>
> Obviously this would be playing with fire on intermediate values (*much*
> more dangerous than the usual caveats that apply to iterative processing
> with floats). But it may be closer to the behavior you are looking for --
> conceptually, anyway. I have no idea what you're really doing.
>
> -Craig
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

```