标签: ieee-754

1.0 / 0.0 - 有效的声明?

我只是想对 std::set<> 应用无穷大的加载因子,因为我想要有固定数量的存储桶。所以我使用了 1.0f / 0.0f 的负载因子,因为它比 numeric_limits<float>::infinity() 更短。MSVC 由于被零除而给出错误。clang-cl 和 clang++ 编译代码没有错误。那么哪个编译器是正确的呢?

c++ ieee-754

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

为什么C编译器在[5] == 5 [a]时出错

为什么这会让人高兴呢

double zero = 0.0;    
double a[] = { 0,0,0,0,0, zero/zero}; // NaN
cout << (a[5] == 5[a] ? "true" : "false") << endl;
Run Code Online (Sandbox Code Playgroud)

版画

false
Run Code Online (Sandbox Code Playgroud)

c++ arrays ieee-754

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

计算机是否开始正确存储0.1?

在学习浮点运算时,我发现了一些东西,我引用:'浮点数/双精度不能精确存储0.1".

SO上有一个问题指向同一件事,接受的答案也很有说服力.但是我想在我自己的计算机上试一试,所以我写下面的程序如下

double a = 0.1;

if (a == 0.1)
{
    Console.WriteLine("True");
}
else
{
    Console.WriteLine("False");
}

Console.Read();
Run Code Online (Sandbox Code Playgroud)

和控制台打印True.令人震惊,因为我已经说服了别的东西.任何人都可以告诉我浮点运算是怎么回事?或者我只有一台将数值存储为10的计算机?

c# floating-point precision ieee-754

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

为什么将浮点数除以10的幂不如直接键入数字那么准确?

我跑的时候

printf("%.8f\n", 971090899.9008999);
printf("%.8f\n", 9710908999008999.0 / 10000000.0);
Run Code Online (Sandbox Code Playgroud)

我明白了

971090899.90089989
971090899.90089977
Run Code Online (Sandbox Code Playgroud)

我知道为什么两者都不准确,但我不明白为什么第二个与第一个匹配
我认为基本的算术运算(+ - */)总是尽可能准确...
第一个数字不是第二个数字比第二个更精确的结果吗?

c floating-point division ieee-754

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

标签 统计

ieee-754 ×4

c++ ×2

floating-point ×2

arrays ×1

c ×1

c# ×1

division ×1

precision ×1