标签: floating-point-precision

Printf宽度说明符,用于保持浮点值的精度

是否有printf宽度说明符可以应用于浮点说明符,该说明符会自动将输出格式化为必要的有效位数,以便在重新扫描字符串时,获取原始浮点值?

例如,假设我打印float2小数位数的精度:

float foobar = 0.9375;
printf("%.2f", foobar);    // prints out 0.94
Run Code Online (Sandbox Code Playgroud)

当我扫描输出时0.94,我没有符合标准的保证我将获得原始的0.9375浮点值(在这个例子中,我可能不会).

我想要一种方法告诉printf自动将浮点值打印到必要的有效位数,以确保它可以扫描回传递给的原始值printf.

我可以使用一些宏float.h导出要传递的最大宽度printf,但是是否已经有一个说明符可以自动打印到必要的有效位数 - 或者至少是最大宽度?

c floating-point printf c99 floating-point-precision

84
推荐指数
8
解决办法
21万
查看次数

什么是长双重文字的C++后缀?

在C++(和C)中,没有后缀的浮点文字默认为double,而后缀f意味着a float.但是后缀是long double什么?

不知道,我会定义,比方说,

const long double x = 3.14159265358979323846264338328;
Run Code Online (Sandbox Code Playgroud)

但我担心的是变量x包含的有效位3.14159265358979323846264338328少于64,因为这是一个double文字.这种担心是否合理?

c c++ literals floating-point-precision

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

设置BigDecimal的特定精度

我有一个XSD,要求我使用BigDecimal作为lat/lon.我目前将lat/lon作为双精度,并将它们转换为BigDecimal,但我只需要使用大约12个精度位置.我无法弄清楚如何设置它.谁能帮我这个?

java bigdecimal floating-point-precision

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

pow()似乎是一个人在这里

这里发生了什么:

#include <stdio.h>
#include <math.h>
int main(void) {
    printf("17^12 = %lf\n", pow(17, 12));
    printf("17^13 = %lf\n", pow(17, 13));
    printf("17^14 = %lf\n", pow(17, 14));
}
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

17^12 = 582622237229761.000000
17^13 = 9904578032905936.000000
17^14 = 168377826559400928.000000
Run Code Online (Sandbox Code Playgroud)

13和14与wolfram alpa cf 不匹配:

12: 582622237229761.000000
    582622237229761

13: 9904578032905936.000000
    9904578032905937

14: 168377826559400928.000000
    168377826559400929
Run Code Online (Sandbox Code Playgroud)

而且,一些奇怪的部分并没有错 - 一个错了!

如果这是我达到pow()可以为我做什么的限制,有没有可以计算这个的替代方案?我需要一个可以计算的函数x^y,其中x^y始终小于ULLONG_MAX.

c floating-point pow floating-point-precision

42
推荐指数
3
解决办法
2964
查看次数

Python:查找浮点列表中最小项的索引

如何在Python浮动列表中找到最小项的索引?如果它们是整数,我只会这样做:

minIndex = myList.index(min(myList))
Run Code Online (Sandbox Code Playgroud)

但是,对于浮点数列表,我得到以下错误,我假设因为浮点相等比较相当不确定.

ValueError: 0.13417985135 is not in list
Run Code Online (Sandbox Code Playgroud)

现在,我知道我可以简单地滚动列表并比较每个项目,看它是<(min + 0.0000000000001)和>(min - 0.0000000000001),但这有点混乱.是否有更优雅(最好是内置)的方法来查找浮动列表中最小项的索引?

python floating-point list minimum floating-point-precision

41
推荐指数
4
解决办法
8万
查看次数

浮点精度是可变的还是不变的?

我不断得到浮点数(即float,, doublelong double)是否只有一个精度值,或者具有可以变化的精度值的混合答案.

一个名为float vs. double precision的主题似乎暗示浮点精度是绝对的.

然而,另一个叫做float和double之间差异的话题说,

通常,double具有15到16个十进制数字的精度

另一位消息人士

float类型的变量通常具有大约 7位有效数字的精度

double类型的变量通常具有大约 16位有效数字的精度

如果我正在使用敏感代码,当我的值不准确时,我不喜欢引用上面的近似值.所以让我们记录下来吧.浮点精度是可变的还是不变的,为什么?

floating-point binary decimal significant-digits floating-point-precision

38
推荐指数
7
解决办法
2373
查看次数

JavaScript中是否存在parseDouble?

在JavaScript中,我有一个21位的数字,我想解析它.

JavaScript中是否存在parseDouble方法?

javascript floating-point-precision

35
推荐指数
1
解决办法
5万
查看次数

为什么ColdFusion中0.06 + 0.01 = 0.07?

为什么ColdFusion中的数学运算似乎不受浮点数学问题的影响?拿代码:

result = 0.06 + 0.01;

writedump(result);
writedump(result.getClass().getName());
Run Code Online (Sandbox Code Playgroud)

哪个输出

0.07

java.lang.Double中

然而,相当的Java代码产生了我在添加两个双精度时所期望的:

public static void main(String[] args) {
    double a = 0.01d;
    double b = 0.06d;

    System.out.println(a + b); //0.06999999999999999
}
Run Code Online (Sandbox Code Playgroud)

这是我期望从ColdFusion看到的,因为浮动数学的现实(http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html).

ColdFusion在幕后做了一些"魔术"还是我在这里看到一个孤立的异常?

java coldfusion floating-point-precision cfml

28
推荐指数
1
解决办法
1315
查看次数

为什么使用double的for循环无法终止

我正在查看旧的考试问题(目前是大学的第一年).我想知道是否有人能够更彻底地解释为什么以下for循环在它应该结束时不会结束.为什么会这样?我知道它因为四舍五入错误而跳过100.0,但为什么呢?

for(double i = 0.0; i != 100; i = i +0.1){
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

java for-loop floating-point-precision

27
推荐指数
4
解决办法
1499
查看次数

获得下一个最小的双号

作为单元测试的一部分,我需要测试一些边界条件.一种方法接受一个System.Double参数.

有没有办法获得下一个最小的双值?(即将尾数减1个单位值)?

我考虑使用,Double.Epsilon但这是不可靠的,因为它只是从零开始的最小增量,因此不适用于较大的值(即9999999999 - Double.Epsilon == 9999999999).

那么所需的算法或代码是什么:

NextSmallest(Double d) < d
Run Code Online (Sandbox Code Playgroud)

......总是如此.

c# double epsilon ieee-754 floating-point-precision

23
推荐指数
1
解决办法
2512
查看次数