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#Math.Floor()返回double而不是int
来自MSDN文档:
返回小于或等于指定的双精度浮点数的最大整数
它说它返回一个整数.它可以返回一个double,我总是把它投到一个int但它只是很奇怪,不是吗?
我在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#的初学者,我正在使用浮点数.我需要在这两个数字之间进行减法,但它不起作用.我知道这是由浮点数引起的,但我该如何解决呢?如果你这么好,你可以解释一下为什么会发生这种情况吗?提前致谢.
可能重复:
为什么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)
为什么双重结果是错误的?
如果我想生成一个从1到6并以.01递增的数组,那么最有效的方法是什么?
我想要的是一个数组,mins和maxs可能会在以后更改...像这样: x[1,1.01,1.02,1.03...]
解决了一个错误,我得到了一些有趣的发现.
这个程序的结果
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) decimal在 C# 中使用或之间有什么区别float?我知道float用于更精确的小数,并且decimal用于货币或价格等小数位数,但是当它用于小数位数时,为什么使用而不是decimal更好float?
一些更有经验的人可以解释我今天发现的这个奇怪错误吗?当我用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是相似类型(浮点)时,为什么我会得到这样的结果.精确度可以与这些少量产生差异吗?