gpt4 book ai didi

c# - 在负十六进制和负十进制之间转换会给出错误的结果

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:15 27 4
gpt4 key购买 nike

我正在尝试在十进制和十六进制之间手动转换数字。我让它适用于正数并将负小数转换为“负”十六进制,但我无法将其从“负”十六进制转换为负十进制。

这是我尝试使用的代码:

private string HexToDecimal(char[] toConvert)
{
if (negativeValue)
{
negativeValue = false;

long var = Convert.ToInt64(HexToDecimal(ResultLabel.Text.ToCharArray()));

long valueToHex = var - (long)Math.Pow(16, 15);

return ResultLabel.Text = valueToHex.ToString();
}
else
{
double total = 0;
//Convert hex to decimal

HexOrDecimalLabel.Text = "Decimal";

//TODO: create int array from indivial int
char[] charArray = toConvert;
long[] numberArray = HexSwitchFunction(charArray);

//TODO: reverse array
Array.Reverse(numberArray);

//loop array, times value by 16^i++, adding to total. This is the method used to convert hex to decimal
double power = 0;
foreach (int i in numberArray)
{
total += (i * (Math.Pow(16, power)));
power++;
}

//set the result label to total

isHex = false;
AllowHexButtons();

return ResultLabel.Text = total.ToString();
}
}

例如,我可以将 - 10 转换为 FFFFFFFFFFFFFFF6,但是当我尝试将其转换为十进制时,我得到 1.15292150460685E+18,我不能用它做任何方程式。

有人知道解决这个问题的方法吗?

最佳答案

这是因为 double 使用不同的负数表示法。将 totalpower 的类型从 double 更改为 long 将解决此问题。

关于c# - 在负十六进制和负十进制之间转换会给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536756/

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