Erlang浮动和截断

问题描述 投票:1回答:2

Windows上的R15b给出:

>trunc(1.9999999999999999999).
2

就此而言,只需键入float返回:

> 1.9999999999999999999.              
2.0

AFAIK,截断函数应该只删除小数部分(至少这是我需要的,无论如何)。一个地板功能也可以做AFAIK的技巧,但我见过的地板实现在线使用...你猜对了......截断。

我不是在挑剔这个,我实际上需要这个对于我正在开发的程序是正确的。

有什么想法吗?

谢谢。

erlang floating-point truncate
2个回答
1
投票

您的问题是十进制数表示为IEEE兼容的二进制表示(32,64或128位)。

如果你真的需要精度,你应该使用其他数值数据结构,如Binary Coded Decimalfixed-point arithmetic

希望这可以帮助!


0
投票

如果你想让TRUNC浮动,也许这个可以帮助:

select substring (convert(varchar(14), CAST (20160303013458 as varchar(14))) , 1 , 8)
© www.soinside.com 2019 - 2024. All rights reserved.