Tag: math

C#分配号码的公式

我正在寻找一个公式,可以根据最小数量,最大数量和数字(或点)之间的数字以线性格式展开数字。 问题是,越接近最大值,那里的数字就越多。 一个例子(数字会有所不同,大约会增加100倍) Min = 0 Max = 16 AmountOfNumbersToSpread = 6 0 1 2 3 4 5 6 7 8 9 ABCDEF 1 2 3 4 5 6 我在这里先向您的帮助表示感谢。

C# – 为什么Math.Atan(Math.Tan(x))!= x?

请问这个新手问题…… 如果tan(x)= y且atan(y)= x为什么Math.Atan(Math.Tan(x))!= x ?? 我试图计算x之类的东西 tan(2/x +3) = 5 所以 atan(tan(2/x + 3) = atan(5) 等等…但我试过这个: double d = Math.Atan(Math.Tan(10)); 和d!= 10 ……为什么? 谢谢你的时间!

为什么Math.Tan(90)提供了非未定义的值?

在使用Math.Tan()我发现90度的结果并不是未定义的。 但是,是1.6331779e + 16 这是该应用程序的屏幕截图 这是代码, // convert to degrees angle = (Convert.ToDouble(op1) * Math.PI / 180); // write the output FinalResult.Text = Math.Tan(Convert.ToDouble(angle)).ToString(); 为什么会出现这种行为?

Math.Sin,Math.Cos和Math.Tan精确度和正确显示它们的方法

我用C#编写了一个计算器。 textBoxResult是一个显示数字的文本框 recount是以度为单位取角度并以弧度为单位返回的函数 我从texBoxInput获取角度 public double recount(int number) { double wyjscie = 0.0; double Number = number; wyjscie = Number * (Math.PI / 180); return wyjscie; } //function which is called out when user presses the button: textBoxResult.Text = Math.Round(Math.Tan(recount(Convert.ToInt32(texBoxInput.Text))),2).ToString(); 正如你所看到的Math.Tan ,当我使用Math.Tan ,我试图将这个数字Math.Tan ,但Math.Tan仍然给出了从90度开始的tan为1,63317787283838E + 16。 我一直试图找到答案,但失败了。 我无法弄清楚如何显示正确的结果。

如果只知道三个非共线点,如何确定圆的半径和中心?

我正在开发一个处理Oracle Spatial几何的C#程序。 当圆形数据存储在几何字段中时,仅存储三个非共线点以表示圆形。 问题是我需要在Google地图网页上使用这些数据,并且需要圆的中心点和半径(因为我的圆绘图function使用了该信息)。 任何人都可以帮助解决所涉及的数学并将所述数学转换为C#? 我认为 这个页面可能会有答案,但我很难跟上它。 给出了三个点的半径和中心公式,但是他们将变量定义为矩阵,然后我就迷失了。 我如何在代码中解决这个问题?

RSA Public exponent默认为65537.该值应该是多少? 我的选择有什么影响?

我正在为可能遇到不同指数大小的软件创建unit testing。 ( 参见本RFC第3.3.1节 ) 如何使用Bouncy Castle或任何其他C#库生成密钥大小为65537的RSA密钥对。 如果答案是我可以直接修改它,只要我更新私钥,我应该对公钥和私钥进行哪些具体的更改(或重新计算)? 这是我用来创建指数为65537的密钥的示例代码: // Create key RsaKeyPairGenerator generator = new RsaKeyPairGenerator(); var param = new KeyGenerationParameters(new SecureRandom(), 1024); generator.Init(param); AsymmetricCipherKeyPair keyPair= generator.GenerateKeyPair(); // Save to export format SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public); byte[] ret = info.GetEncoded(); string ovalue1 = Convert.ToBase64String(ret); // Read from export format byte[] publicKeyBytes = Convert.FromBase64String(ovalue1); AsymmetricKeyParameter […]

为什么Int32.MaxValue * Int32.MaxValue == 1?

我知道, Int32.MaxValue * Int32.MaxValue将产生一个大于Int32的数字; 但是,这句话不应该提出某种例外吗? 当我做一些像IF (X * Y > Z)这样的东西都是Int32时候,我碰到了这个。 X和Y足够大,你从X * Y得到一个虚假的值。 为什么会如此以及如何解决这个问题? 除了将所有内容都输入Int64之外

C#:使用模数学递减时钟

试图用手模拟24小时时间的翻转(使用数学与使用时间跨度类)。 递增部分很容易弄清楚如何从23:00到0:00滚动,但从另一个方向走向结果却变得非常混乱。 这是我到目前为止所拥有的: static void IncrementMinute(int min, int incr) { int newMin = min + incr, hourIncrement = newMin / 60; //increment or decrement the hour if((double)newMin % 60 -1) hourIncrement = -1; Console.WriteLine(“Hour increment is {0}: “, hourIncrement); } 我发现的问题是当倒退时,如果模数在数字之间,它将不会正确递减。 例如:它是12:00并且你减去61分钟,我们知道时间将是10:59,因为从12:00到11:59,小时应该回滚1小时,然后从11:00再回来到10:59 不幸的是我计算它的方式:在这种情况下newMin%60,只抓取第一个小时回滚,但由于第二次回滚在技术上是-1.0166作为余数,并且因为mod只返回一个整数,所以它四舍五入。 我确定我在这里缺少一些基本的数学,但有人可以帮助我吗? 编辑:我已经写了很多种方式。 有些比其他人更接近,但我知道这比看起来更简单。 我知道这个看起来有点“他正在做什么”,但你应该能够看到我想要做的事情。 增加时钟并使其从23:59到0:00翻转很容易。 向后看已经certificate并不那么容易。 好的,这是带翻转的incrementMinute。 简单。 但试着倒退。 不起作用。 static void […]

C#:检查一组枚举值的最佳方法是什么?

假设你有enum MyEnum {A = 0, B = 1, C = 2, D = 4, E = 8, F = 16}; 在某些时候,您有一个函数将检查MyEnum的实例,如果它是C,D或F则返回true bool IsCDF(MyEnum enumValue) { return //something slick } 我记得有一些非常灵巧的方法可以进行位移和预先形成这种操作,比一堆三元if语句读取方式更好但是对于我的生活我不记得它是什么。 谁知道?

C#函数找到两个数字的增量

我只是想知道.net框架中是否有任何内置,我可以轻松返回两个数字之间的增量? 我编写的代码可以做到这一点,但它听起来应该已经在框架中了。