c# - 创建一个比默认数字大的新 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# 源代码,但找不到真正的数学。
任何帮助或想法将不胜感激。
解决方案
正如 Tim Rutter 在评论中建议的那样,请查看 .NET 文档中的 BigInteger 类。旧的 Mono c# 2.0不支持它,但自Unity 2017.1 中的 .NET 4x起支持它
要将其与突发编译器一起使用,您可以将 BigInteger 实例转换为字节数组,如此处所示。. 我想这与您的工作流程相似,只是在进行计算时必须将其转换回 BigInteger。
如果这不起作用,我建议在这里查看第一个答案,因为它为自定义 BigInteger 类提供了解决方案(我没有尝试或测试过)
推荐阅读
- javascript - 在页面上找到重复的 div ID 名称并使用 Javascript 或 jQuery 附加一个数字
- php - 在ajax中将多个复选框值传递给PHP
- javascript - HTML5 + JS 视频 - 多个播放器,每个播放器都有自己的控件
- visual-studio - VS Enterprise .NET Build Extensions 版本的 System.Net.Http 覆盖预期的 4.3.3 nuget 版本
- sql - 选择 IF 还是有更简单的方法?
- r - 为什么 Rcpp 中的 Portmanteau 测试比 R 中的慢?
- java - 在 Debain 上使用 blue cove 的 Java 蓝牙问题
- php - php面向对象范围访问数组
- bitcoin - 如何使用 bitcore 创建一个私有比特币网络?
- matlab - 通过模拟输出通道发送输出信号