任何等效的“扩展”的C#?
我正在研究Mandelbrot屏幕保护程序的一个新版本,而且我的浮点数精度不够 - 简单的double值没有足够的重要数字来满足我的需求。
更有意义的数字=放大到分形的更高级别
当我在Delphi 7中编写这个屏幕保护程序的版本时,我使用了80位扩展浮点类型。
在.NET中,我可以切换到十进制,但性能受到影响很糟糕,使分形的生成速度减慢了20倍左右。
有没有扩展的.NET等价物? 或者,或者,是否有任何数字类型的精度高于仍然使用FPU进行评估的double ,因此不具有十进制的高性能命中率?
更新
我的屏幕保护程序已经设法放大许多(很多!)数量级的分形; 目前只有当使用的数字类型无法分隔相邻像素的坐标时,才会重置为基本分形。 双扩展改进的额外16位精度会让我接近16倍的尺寸。
至于性能,我的算法已经设法消除所需数学的95-99%(与计算许多像素的朴素实现相比),同时保留分形的完整性。
在64位平台上, Extended
类型是Double的别名,只有8个字节。 在32位平台上, Extended
号码表示为10个字节(80位)。
这意味着即使你的Delphi程序在64位平台上可能也表现不佳。
如果您需要超过64 decimal
的数字数据类型,请使用decimal
并优化您的算法以提高性能。