基本上,我理解为什么我在这里遇到错误,但是,我不确定要怎么做,这是我的代码:
await mongoose.connect("mongo://_myusername_:_password__")@cluster0-shard--00-00-neswb.mongodb.net:27017...
基本上,我正在尝试使数据类型具有与int一样的精确度,但也具有小数。无论我为什么不使用ulong或double或其他某种形式的浮点精度,它都必须绝对精确。
答案 0 :(得分:0)
此代码应执行您想要的操作。您仍然需要初始化'leftNumberExact'
和'decimalNumberExact'
,但其他属性将起作用:
public struct CashAmount
{
public int leftNumberExact, decimalNumberExact;
public string CashAmountExact
{
get:
{
return leftNumberExact + "." + decimalNumberExact;
}
}
public decimal CashAmountApprox
{
get:
{
return decimal.Parse(CashAmountExact);
}
}
}
如您所见,我仅使用getter将字段设置为属性。
我还更改为'decimal'
类型,应该完全准确。
答案 1 :(得分:0)
如果约束实际上“无论如何都必须绝对精确”,那么您应该使用强制执行这些约束的东西,例如github上的peteroupc的Numbers库。
请参见EDecimal class,该规则强制执行此划分规则:
如果结果不准确,则返回NaN,因为该结果将具有无终止的十进制扩展。
例如,这意味着1/3 == NaN:
EDecimal.One.Divide(3) == NaN
总的来说,我认为这是过于严格的限制,您最好使用理智而直观的库,例如GMPLib的包装器(GNU多精度库)或任何其他可用的库:one two。
如果您打算自己实现某些功能,则至少要签出其他库,因为最终您将获得类似于或基于BigInteger的功能。