相关疑难解决方法(0)

为什么Perl的sprintf不能正确舍入浮点数?

我一直在寻找Perl内置函数sprintf使用的舍入约定.

我认为它进行了正常的舍入(例如在Java的舍入模式约定中的 ROUND_HALF_UP ),但挖掘进一步证明这是错误的:

> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 0.335
0.34
> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 1.335
1.33
Run Code Online (Sandbox Code Playgroud)

floating-point perl printf

5
推荐指数
2
解决办法
4343
查看次数

所有double的Java总和不返回预期结果

可能重复:
在double中移动小数位

为什么以下数字总和不等于0.4622?但0.46219999999999994

Double total = new Double(0.08) + new Double(0.0491) + new Double(0.3218) + 
         new Double(0.0113) + new Double(0.0); // = 0.46219999999999994
Run Code Online (Sandbox Code Playgroud)

我有一个检查用户输入的应用程序.

用户输入5个十进制数和一个总数.应用程序检查komma后面4位小数的所有5个数字的总和是否等于总数.

限制它给了我0.4621不等于0.4622.我不能使用DecimalFormat,因为它将它向上舍入.如果我明确地说,向下舍入,那么这种情况就会失败.

关于如何解决这个问题的任何建议?

java double sum floating-accuracy decimalformat

3
推荐指数
2
解决办法
2万
查看次数