相关疑难解决方法(0)

Perl for loop to haywire

我在Perl中有一个简单的for循环

for ($i=0; $i <= 360; $i += 0.01)
{
print "$i ";
}
Run Code Online (Sandbox Code Playgroud)

为什么当我运行这段代码时,我得到以下输出,一旦达到0.81,它突然开始加载更多的小数位?我知道我可以简单地围绕以避免这个问题,但我想知道它为什么会发生.0.01的增量似乎并不疯狂.

 0.77
 0.78
 0.79
 0.8
 0.81
 0.820000000000001
 0.830000000000001
 0.840000000000001
 0.850000000000001
 0.860000000000001
 0.870000000000001
Run Code Online (Sandbox Code Playgroud)

perl for-loop

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

货币数据的Visual C++舍入问题

在我的财务相关应用程序中,Double用作货币数据的数据类型.但最近我发现Double在舍入时有问题.

例如,
存储为357549999999999999999999 35.75 的双变量35.25 内存储为35.750000000000000000001

那么什么时候它试图将数字四舍五入到一个小数点35.25 = 35.3 35.75 = 35.8

这意味着从地板到圆形天花板的一个数字.

  1. 有人可以为这个问题提出解决方案吗?

  2. 在Visual C++中,适用于货币数据的数据类型是什么

c++ floating-point

3
推荐指数
1
解决办法
669
查看次数

浮点数学不正确?

这是一个让我在过去几个小时里完全感到困惑的问题......

我的程序中有一个硬编码的等式:

double s2;

s2 = -(0*13)/84+6/42-0/84+24/12+(6*13)/42;
Run Code Online (Sandbox Code Playgroud)

每次我运行该程序时,计算机会吐出3作为答案,但是手动进行数学计算,我得到4.更进一步,在将方程式输入Matlab之后,我也得到了答案4.这里有什么进展?

我唯一能想到的就是这里出错了就是圆满错误.然而,最多有5个舍入误差,再加上使用双精度数学,我的最大误差将非常小,所以我怀疑这是问题所在.

有谁能提供任何解决方案?

提前致谢,

-Faken

c++ floating-point

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

如何检查两个矩阵是否相同?

想法是将两个矩阵相乘。并使用 Eigen 进行相同的乘法,然后检查结果是否相同。

在下面制作N = 2返回same thingN = 1000返回NOT same thing。为什么?

#include <cstdlib>
#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

const int N = 1000;

void mult_matrix(double x[N][N], double y[N][N], double z[N][N]) {
    int rows = N;
    int cols = N;
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            for (int k = 0; k < cols; k++)
                z[i][j] …
Run Code Online (Sandbox Code Playgroud)

c++ matrix eigen c++11 c++14

2
推荐指数
1
解决办法
3458
查看次数

标签 统计

c++ ×3

floating-point ×2

c++11 ×1

c++14 ×1

eigen ×1

for-loop ×1

matrix ×1

perl ×1