相关疑难解决方法(0)

.NET Decimal的二进制表示

嘿所有,快速问题:.NET decimal类型如何在内存中以二进制形式表示?

我们都知道浮点数是如何存储的,因此存在不准确的原因,但decimal除了以下内容之外我找不到任何有关的信息:

  1. 显然比浮点数更准确
  2. 占用128位内存
  3. 2 ^ 96 +符号范围
  4. 28(有时29?)总数字的有效数字

有什么方法可以解决这个问题吗?我的计算机科学家要求答案,经过一个小时的尝试研究,我找不到它.似乎有很多浪费的东西,或者我只是在脑海中想象这个错误.有人可以对此有所了解吗?谢谢.

.net binary decimal representation

18
推荐指数
1
解决办法
3010
查看次数

你如何划分整数并在C#中获得双倍?

int x = 73;  
int y = 100;  
double pct = x/y;  
Run Code Online (Sandbox Code Playgroud)

为什么我看到0而不是.73?

c# math

6
推荐指数
2
解决办法
879
查看次数

它的浮点精度是52还是53位?

我继续看到64位IEEE浮点表示中有关53位精度的无意义.有人请向我解释一下,如果世界上有一点卡在其中,那么它对数字精度的贡献是什么?如果你有一个浮点单元,其中bit0被固定为1,你当然会知道它比正常情况下产生的精度要低1位.这些敏感性在哪里?

此外,只有指数,没有尾数的比例因子,完全指定数字的前导位的确切位置,因此不使用前导位.第53位和第19洞一样真实.它只是一个(有用的)拐杖来帮助人类思维和以二进制方式访问这些值的逻辑.否则要求重复计算.

声称这第53位废话的所有书籍和文章都是错的,或者我是个白痴.但是卡住的是一个卡住的位.让我们听听相反的论点.

floating-point ieee-754 floating-point-precision

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

计算后的十进制值

我无法理解什么是错的?我有一点变数.

decimal Price = 22348 / 100;

我得到的答案是:223,但我应该得到223.48.问题是什么?

c#

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

不正确的double到整数转换

我真的很抱歉问这么简单的问题,但我真的无法弄清楚是什么问题.我想将任何商标转换为12年级.我试着这样做如下:

double coef=(4/20)*12;
int mark=(int)coef;
Run Code Online (Sandbox Code Playgroud)

但是当我通过调试器执行此代码时,我发现它coef等于零.为什么这是双变量?

c# type-conversion

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

C#中这个简单的等式使我的思绪感到困惑

我有一个问题.我正在尝试将Farenheit设为Celcius计算器,当我做数学的一小部分时,它有点不起作用.它是0或1.

private void toCelcius_Click(object sender, EventArgs e)
{
    double F = double.Parse(temperatureBox.Text);
    double fm32 = F - 32;
    double fraction = (9 / 5);
    double newTemp = fraction*fm32;

    temperatureLabel.Text = newTemp.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我一直使用100作为我的测试号,每次我向文本框发送100,它返回68.它应该在30左右.

目前程序只将分数检测为1.我尝试使用十进制而不是使用double,但这会破坏newTemp问题.我尝试使用float,但得到的结果与double相同.我没有什么特别的想法,但是非常令人沮丧.

如果有人知道如何解决这个问题,我会非常感激.

编辑:Facepalm自从我使用双打以来已经很久了,忘了我需要在每个数字之后都有.0.

c#

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

为什么这个操作导致0?

我在这里想要完成的是计算迭代链表的算法进度,但是当我尝试将迭代次数除以链表中的元素总数时,我总是得到0,代码是这个:

double progress = iteratorCount/crawlerTechnologiesLinkedList.Count;
            Console.WriteLine("Progress:" + progress * 100);
Run Code Online (Sandbox Code Playgroud)

并且调试会话显示这些值

调试会话

我一直试图弄清楚为什么进步等于0.0但无济于事.任何帮助将不胜感激.

c#

0
推荐指数
1
解决办法
65
查看次数

这在 .NET 6 中正常吗

我感觉这是一个错误,是吗?

decimal s = 30 / 9;
double w = 20 / 9;
Console.WriteLine(s);
Console.WriteLine(w);
Run Code Online (Sandbox Code Playgroud)

结果是

在此输入图像描述

.net c# .net-core

0
推荐指数
1
解决办法
123
查看次数