gpt4 book ai didi

c# - 在 C# 中指定特定的 double 文字

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:24 25 4
gpt4 key购买 nike

如何在 C# 中指定特定的 double 精度文字或值?

例如,我想在程序中使用最大 double 值小于 1 的常量。小于一的最大 double1.11111111 11111111 11111111 11111111 11111111 11111111 1111 x 2^(-1) 二进制。将其表示为十六进制的 big-endian double 将是 0x3fe f ffff ffff ffff

我可以用下面的代码生成它:

var largestDoubleLessThanOneBytes = new byte[] {0x3f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
if (BitConverter.IsLittleEndian) largestDoubleLessThanOneBytes = largestDoubleLessThanOneBytes.Reverse().ToArray();
double largestDoubleLessThanOne = BitConverter.ToDouble(largestDoubleLessThanOneBytes, 0);

BitConverter 不能用在 const 的声明中,所以不能用它来代替文字值。

使用 this tool ,我可以想出文字 9.99999999999999888977697537484E-1,它最终是完全相同的 double。 BitConverter.ToString(BitConverter.GetBytes(9.99999999999999888977697537484E-1)) == "FF-FF-FF-FF-FF-FF-EF-3F"

除了找到一个十进制字面值,其最接近的 double 表示就是您想要的 double ,是否有任何其他方法可以将特定的 double 值放入 c# 代码中?

最佳答案

这可能有点矫枉过正,但该死的,为什么不呢?

unsafe
{
var x = 0x3fefffffffffffff;
var d = *(double*)&x;
Console.WriteLine("{0:r}", d);
}

你好,reinterpret_cast<>在 C# 中

关于c# - 在 C# 中指定特定的 double 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com