标签: double-precision

java:如何将双精度数转换为十进制数

我想将双精度数转换为十进制数.

例如我有23.43,双值将是(使用matlab):174 71 255 122 20 110 55 64现在有这个如何编写一个给我23.43的java程序?

这里是matlab中双精度的计算:

MATLAB根据IEEE标准754构造双精度的双精度数据类型.存储为double的任何值都需要64位,格式如下表所示:

比特用法

63符号(0 =正,1 =负)

62至52指数,偏向1023

51到0数字1.f的分数f

java matlab decimal double-precision

0
推荐指数
1
解决办法
880
查看次数

双精度浮点数如何转换为单精度浮点格式?

将数字从双精度浮点格式转换单精度浮点格式会导致精度损失.用于实现此转换的算法是什么?

数字是大于3.4028234e+38还是小于-3.4028234e+38简单地减少到各自的限制?我觉得转换过程比这更复杂,但我找不到它的文档.

floating-point type-conversion double-precision ieee-754 single-precision

0
推荐指数
1
解决办法
3690
查看次数

0
推荐指数
1
解决办法
1857
查看次数

C#中的大型双数学乘法

我想要乘以这个数字:

5374711027510012111075768211110475111691021051041057653548210911210211112250867 66690120741165250567278571217510410482757487

用这个数字:

4956889911565576581818287977011111065876967103548749122901151091038910610511189

但是当我将结果转换为字符串时,我得到了这个:

2.66418508698446E + 201

这是:

266418508698446000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000

不完全是精确的数字,那些零表示精度损失,我是对的吗?

是否可以使用C#从该计算中获得精确数字(每一位数字)?

谢谢

.net c# string double double-precision

0
推荐指数
1
解决办法
1563
查看次数

为什么我无法计算双值?

我想计算0.95的值.这是我的方法:

public static final int VAR = 5; 
private static double getDouble(){
        double dis = (double)(VAR/100);
        dis = (double)(1-dis);
        return dis;
}
Run Code Online (Sandbox Code Playgroud)

但是,它输出1.0 ?? 如果我在main方法中键入相同的代码,我得到0.95.我的错误在哪里?

java double double-precision

0
推荐指数
1
解决办法
58
查看次数

将 2^31 分配给 float 或 double

我必须将整数值乘以 2^31。我用谷歌搜索了一下,看起来双打的范围在 2.23e-308 <= |X| 之间 使用 64 位时 <= 1.79e308,并且是 1.18e-38 <= |X| 之间的浮点数 <= 3.40e38。

这比我需要的要多得多。但这不起作用。

我的头文件中有这个常量值:

static const float SCALE_FACTOR = 2^-31;
Run Code Online (Sandbox Code Playgroud)

如果那么我就这样做:

float dummy = SCALE_FACTOR;
Run Code Online (Sandbox Code Playgroud)

那么,dummy 的值为 11。

我不知道问题是否在于分配这样的常量值,但我不知道如何在不损失精度的情况下编写它。

有什么帮助吗?

编辑:抱歉,愚蠢的问题。我的 MatLab 背景背叛了我,忘记了 ^ 在 C++ 中不是用于求幂。我已投票结束。

c++ floating-point double double-precision floating-point-precision

-1
推荐指数
1
解决办法
3254
查看次数

不正确地使用SetPrecision

使用以下2个函数关注具有*注释的行.当cout <<语句执行时,没有显示小数位.3021680380/10000000变为302.而不是302.1680.

void convert(){
    setprecision(4);   //************************
    newFileTime = new double[numRec];   //***********
    newOffset = new int[numRec];
    newSize = new int[numRec];
    newNum = new int[numRec];
    newType = new int[numRec];
    newTime = new int[numRec];

    for(int i = 0; i<numRec; i++){
        newFileTime[i] = fileTime[i] / 10000000; //**********
        newOffset[i] = offset[i] / 512;
        newSize[i] = fileSize[i] / 512;
        newNum[i] = 0;
        if(type[i] == "Write"){
            newType[i] = 0;
        }else{
            newType[i] = 1;
        }
        newTime[i] = responseTime[i] / 10000000;
    }
}

void exports(){
    setprecision(4);  //**************
    ofstream fout; …
Run Code Online (Sandbox Code Playgroud)

c++ precision double-precision

-1
推荐指数
1
解决办法
5063
查看次数

15位数字后失去小数精度-错误的PI

尝试打印多于15个小数位的PI结果会导致在第15个小数位之后打印不正确的小数。尽管分配了30个正确的十进制值,并且使用long double来保留该值。以下测试案例清楚地显示了该错误。

这是出乎意料的。如果数字中有任何错误,我希望在用尽IEEE-754位数之后直到第25位都不会看到任何错误。这里发生的是什么规则可能可以解释,我无法打印回我刚刚分配给以下sPI的相同30位数字。这也会影响打印中M_PI包含的表示形式的能力math.h

#include <stdio.h>

int
main (void) {

    // static PI approximation (glibc man 1.17)
    long double sPI = 3.14159265358979323846264338327;
    char strPI[]   = "3.14159265358979323846264338327";

    printf ("\n %s (strPI - string - correct)\n", strPI);
    printf (" %.29Lf (sPI - long double - INCORRECT)\n\n", sPI);

    return (0);
}
Run Code Online (Sandbox Code Playgroud)

输出:

3.14159265358979323846264338327 (strPI - string - correct)
3.14159265358979311599796346854 (sPI - long double - INCORRECT)
                 ^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

大概,此十进制错误将适用于精度大于16的任何十进制数字。当以字符串形式打印时,PI可以正常打印(显然),但是以双精度形式打印时-小数精度会在第15个小数点后下降。是什么原因造成的?

非常有趣,正如建议L在浮点文字的末尾添加一个确实有帮助:

 3.14159265358979323846264338327 (strPI - string - correct) …
Run Code Online (Sandbox Code Playgroud)

c math double-precision

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

c ++:为什么0显示为1.29571e + 261

我试图用c ++创建我的第一堂课.我正在调用文件geometryitems.cpp并执行此操作:

using namespace std;

class Point
{
    double x, y, z;
public:
    // constructor
    Point(double x, double y, double z)
        {

        }

    // copy constructor
    Point(const Point& pnt)
        {
            x = pnt.x;
            y = pnt.y;
            z = pnt.z;
        }

    void display()
        {
            cout << "Point(" << x << ", " << y << ", " << z << ")";
        }
};
Run Code Online (Sandbox Code Playgroud)

然后我从另一个文件中调用它:

#include <iostream>
#include <cstdio>
#include "geometryitems.cpp"
using namespace std;

int main()
{
    // initialise object …
Run Code Online (Sandbox Code Playgroud)

c++ visualization double-precision

-4
推荐指数
1
解决办法
87
查看次数