首页 > 解决方案 > 创建一个比默认数字大的新 c# 数字文件

问题描述

我们一直在尝试实现一个可以是任意字节数的新数字,因为我们在计算过程中需要很高的精度。此外,我们正在 Unity Burst 中工作,目前它不支持比浮点数更大的任何东西。

我们一直在通过使用字节数组并实现二进制加法、减法、乘法和除法来做到这一点。这部分奏效了。

我们遇到的问题是性能比整数数学要慢得多。所以它将产生以下内容:

4*3 run 100.000 with int's will take about 0-1 milliseconds
4*3 run 100.000 with our number will take about 100 milliseconds

所以问题是我们是否可以通过继承或复制整数数学代码来使用相同类型的实现。或者只是看看它是如何实现的?我查看了 C# 源代码,但找不到真正的数学。

任何帮助或想法将不胜感激。

标签: c#unity3dmathbinary

解决方案


正如 Tim Rutter 在评论中建议的那样,请查看 .NET 文档中的 BigInteger 类。旧的 Mono c# 2.0不支持它,但自Unity 2017.1 中的 .NET 4x起支持它

要将其与突发编译器一起使用,您可以将 BigInteger 实例转换为字节数组,如此处所示。. 我想这与您的工作流程相似,只是在进行计算时必须将其转换回 BigInteger。

如果这不起作用,我建议在这里查看第一个答案,因为它为自定义 BigInteger 类提供了解决方案(我没有尝试或测试过)


推荐阅读