添加双打的问题。算术编码

时间:2015-06-08 18:26:21

标签: java math double

所以,基本上我有这个算法使用算术编码对单词进行编码。具有百分比的矩阵(String [] [] tabelaProbs和单词(String palavra)如下:

矩阵:

$( document ).ready(function(){
    $(".menu-click").click(function(){
    $(".hs_cos_wrapper_type_menu").slideToggle(600);
    });
    });

词语:

 String tabelaProbs[][] = {{"A", "E", "I", "O", "U", "!"},{"0.2", "0.3", "0.1", "0.2", "0.1", "0.1"}};
事情是,它给了我错误的结果,因为一些与双打的总和给出了错误的结果,这也影响了最终的结果。 最终结果(credencialCodificada)预计为:0.23354

有人可以帮忙吗?

String palavra = "EAII!"; (in lower case: " e a i i ! ")

2 个答案:

答案 0 :(得分:0)

问题是双打的准确度低于其总大小。因此3.0000004精确到4个小数点,但它超过4个小数点。

这也是为什么你应该避免比较或分组双打。

这是一个谈论类似的链接: how to fix double precision issue in java

答案 1 :(得分:0)

  

例如,如果你加0.1 + 0.2,结果不会是0.3,而是像0.30000004。它似乎很小但会影响最终结果

如果你想要任意精度浮点值,我建议你使用BigDecimal,这是java.math中的一个类。关于它的更多信息here()