相关疑难解决方法(0)

在.net中,如何在Decimal和Double之间进行选择

我们前几天正在讨论这个问题,我希望有一个Stackoverflow问题,我会指点人们这样做.)

  • a Double和a有Decimal什么区别?
  • 何时(在什么情况下)你应该总是使用Double
  • 何时(在什么情况下)你应该总是使用Decimal
  • 什么是驱动因素的考虑在不属于上述两个阵营中的一个案例?

有很多问题与这个问题重叠,但他们倾向于询问某人在特定情况下应该做什么,而不是如何在一般情况下做出决定.

.net floating-point

18
推荐指数
2
解决办法
1089
查看次数

C#中的float/double Math.Round

float ff = (float)31.15;

double dd = 31.15;

var frst = Math.Round(ff, 1, MidpointRounding.AwayFromZero);

var drst = Math.Round(dd, 1, MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

第一次:31.1

第一次:31.2

有人可以解释原因吗?

c# double rounding

18
推荐指数
2
解决办法
1576
查看次数

为什么C#Math.Floor()返回Double而不是Int

可能重复:
为什么Math.Floor(Double)返回Double类型的值?

为什么C#Math.Floor()返回double而不是int

来自MSDN文档:

返回小于或等于指定的双精度浮点数的最大整数

它说它返回一个整数.它可以返回一个double,我总是把它投到一个int但它只是很奇怪,不是吗?

c#

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

浮点数,双精度和十进制最大值与大小

我在C#中遇到了这些数据类型的大小和最大值的混乱模式.

在使用Marshal.SizeOf()比较这些大小时,我发现以下结果 -

Float- 4 bytes,
Double - 8 bytes,
Decimal - 16 bytes
Run Code Online (Sandbox Code Playgroud)

当比较他们的MaxValues时,我得到了这样的结果,

 Float- 340282346638528986604286022844204804240,
 Double - 179769313486231680088648464220646842686668242844028646442228680066046004606080400844208228060084840044686866242482868202680268820402884062800406622428864666882406066422426822086680426404402040202424880224808280820888844286620802664406086660842040886824002682662666864246642840408646468824200860804260804068888,
 Decimal - 79228162514264337593543950335
Run Code Online (Sandbox Code Playgroud)

我感到困惑的原因是,Decimal比Float和Double需要更多的非托管内存,但是不能包含比浮动更大的值.任何人都可以解释编译器的这种行为.谢谢.

c# floating-point double types decimal

14
推荐指数
0
解决办法
4万
查看次数

C#错误减法?12.345 - 12 = 0.345000000000001

我是C#的初学者,我正在使用浮点数.我需要在这两个数字之间进行减法,但它不起作用.我知道这是由浮点数引起的,但我该如何解决呢?如果你这么好,你可以解释一下为什么会发生这种情况吗?提前致谢.

c# floating-point numbers floating-accuracy subtraction

10
推荐指数
3
解决办法
1万
查看次数

c#:两个双数问题的总和

可能重复:
为什么C#中的浮点运算不精确?

你好.我有以下问题:

43.65+61.11=104.75999999999999
Run Code Online (Sandbox Code Playgroud)

对于十进制是正确的:

(decimal)43.65+(decimal)61.11=104.76
Run Code Online (Sandbox Code Playgroud)

为什么双重结果是错误的?

c# double decimal

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

C#增量数组

如果我想生成一个从1到6并以.01递增的数组,那么最有效的方法是什么?

我想要的是一个数组,mins和maxs可能会在以后更改...像这样: x[1,1.01,1.02,1.03...]

c# arrays optimization loops increment

7
推荐指数
3
解决办法
9878
查看次数

模数运算符中的C#Bug%

解决了一个错误,我得到了一些有趣的发现.

这个程序的结果

    static void Main(string[] args)
    {
        int i4 = 4;
        Console.WriteLine("int i4 = 4;");
        Console.WriteLine("i4 % 1 = {0}", i4 % 1);

        double d4 = 4.0;
        Console.WriteLine("double d4 = 4.0;");
        Console.WriteLine("d4 % 1 = {0}", d4 % 1);
        Console.WriteLine("-----------------------------------------------------------");
        int i64 = 64;
        double dCubeRootOf64 = Math.Pow(i64, 1.0 / 3.0);
        Console.WriteLine("int i64 = 64;");
        Console.WriteLine("double dCubeRootOf64 = Math.Pow(i64, 1.0 / 3.0) = {0}", dCubeRootOf64);
        Console.WriteLine("dCubeRootOf64 = {0}", dCubeRootOf64);
        Console.WriteLine("dCubeRootOf64 % 1 = {0} ??????????????  Why 1. ??????????", dCubeRootOf64 % …
Run Code Online (Sandbox Code Playgroud)

.net c# math modulo

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

C# 中“十进制”和“浮点数”有什么区别?

decimal在 C# 中使用或之间有什么区别float?我知道float用于更精确的小数,并且decimal用于货币或价格等小数位数,但是当它用于小数位数时,为什么使用而不是decimal更好float

c# floating-point decimal

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

.NET C#float.Parse将不同的结果返回给double.Parse

一些更有经验的人可以解释我今天发现的这个奇怪错误吗?当我用C#脚本加载表数据时,我得到了奇怪的数量.

事实证明问题是类似功能的不同输出:

string amount_in_string = "1234567,15";
double amount_in_double = double.Parse(amount_in_string);
float amount_in_float = float.Parse(amount_in_string);

//amount_in_double = 1234567.15;
//amount_in_float = 1234567.13;
Run Code Online (Sandbox Code Playgroud)

当float和double是相似类型(浮点)时,为什么我会得到这样的结果.精确度可以与这些少量产生差异吗?

.net c# floating-point precision types

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