c# - 计算 double 最后一位的单位 (ULP)

标签 c# .net floating-point double

.NET 是否有内置方法来计算 ULP给定的 double 型或浮点型?

如果没有,最有效的方法是什么?

最佳答案

看起来这个功能很简单;这是基于 vulkanino 链接问题的接受答案中的伪代码:

double value = whatever;
long bits = BitConverter.DoubleToInt64Bits(value);
double nextValue = BitConverter.Int64BitsToDouble(bits + 1);
double result = nextValue - value;

对于 float ,您需要提供自己的 SingleToInt32BitsInt32BitsToSingle 实现,因为 BitConverter 没有这些函数。

This page显示该函数的 java 实现中的特殊情况;处理这些也应该相当简单。

关于c# - 计算 double 最后一位的单位 (ULP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62283029/

相关文章:

.NET Core 2.1 无法引用 .NET Framework 4.7.2 类库

c# - ReSharper:如何删除 "Possible ' System.NullReferenceException'”警告

c++ - 为什么原子双重没有完全实现

gcc 9.3.0 printf %Lf 输出不正确

c - x86-64 上的 long double 是什么?

c# - 为什么在 Linux 中使用 Mono 时找不到 System.Text.RegularExpressions?

c# - 当 C# 表达式使用引用类型时 Activity 抛出异常

c# - 如何使用公共(public)列在 C# 中对 2 个或多个数据表进行完全外部联接

c# - Contains 如何返回 false 但 GetHashCode() 返回相同的数字,而 Equals 返回 true?

C# 确定索引处的字符是否在字符串中的两个字符之间