BigDecimal是一个java.math包中的类,它具有处理大量特定规模的许多好处.c#中是否存在具有此功能的等效类或数据类型.
我想计算一条线的斜率.
public sealed class Point
{
public System.Numerics.BigInteger x = 0;
public System.Numerics.BigInteger y = 0;
public double CalculateSlope (Point point)
{
return ((point.Y - this.Y) / (point.X - this.X));
}
}
Run Code Online (Sandbox Code Playgroud)
我知道BigInteger有一个DivRem函数可以返回除法结果加上余数,但我不知道如何应用它来得到一个double.我正在处理的数字远远超出了Int64.MaxValue的范围,因此剩余部分本身可能超出了传统划分的范围.
编辑:不确定它是否有帮助,但我只处理正整数(> = 1).
重要提示:我只需要几个小数点的精度(5应该足够我的目的).
在 C# 中是否有一种简单、高效和正确(即不涉及到/从 double 转换)的方法来进行地板整数除法(例如Python 提供)。
换句话说,以下的有效版本,不会遭受长/双转换损失。
(long)(Math.Floor((double) a / b))
Run Code Online (Sandbox Code Playgroud)
还是必须自己实现它,例如
static long FlooredIntDiv(long a, long b)
{
if (a < 0)
{
if (b > 0)
return (a - b + 1) / b;
// if (a == long.MinValue && b == -1) // see *) below
// throw new OverflowException();
}
else if (a > 0)
{
if (b < 0)
return (a - b - 1) / b;
}
return a / …Run Code Online (Sandbox Code Playgroud) 我需要ac#number可以处理非常大的数字,但也需要分数支持,我看了.NET 4.0中的System.Numberics.BigInteger,但我不能让它与分数一起工作.
something i = 2;
something j = 5;
something k = i/j; //should be 0.4
Run Code Online (Sandbox Code Playgroud)
当我试着
BigInteger i = 2;
BigInteger j = 5;
double d = (double)(i/j); //d is 0.0
Run Code Online (Sandbox Code Playgroud)
有人知道这样的图书馆吗?
c# ×4
.net ×2
bigdecimal ×1
biginteger ×1
division ×1
equivalent ×1
java ×1
math ×1
numeric ×1