【发布时间】:2010-12-03 21:35:22
【问题描述】:
在 C# 中,没有返回浮点数的“Math.Cos”函数让我很困扰。双精度值是您可以取回的唯一值,因此迫使您将其转换为浮点数。
像这样:float val = (float)Math.Cos(someVal);
我需要使用浮点数,因为我在 Direct3D 中做一些严格使用浮点数的东西。 浮点数在图形世界中更为常见(就目前而言),因为它们是 32 位的。
在 C# 中是否有任何我可以使用的功能,可以像 C++ 那样简单地处理浮点数??
我不想包装任何 C++ 东西,因为这需要在 XNA 和 Linux 上运行 OpenGL。
注意:最好有没有将双精度转换为浮点的代码。
【问题讨论】:
-
你可以用你自己的版本重载 math.cos() ,它只返回一个演员版本。
-
虽然 Direct3D 需要浮点数,但在必须转换之前使用 double 会更好,因为它可以避免大多数(但不是全部)舍入错误问题。
-
@ChrisF - 游戏真的不是这样。舍入很少成为问题,或者可以通过夹紧来解决,避免 Double 的性能节省是显着的。
-
你不能重载
Math.Cos,因为你不能编辑数学类。您可以在自己的类中定义一个函数。 -
我仍在努力克服所谓的现代语言缺乏单精度数学库的事实。
标签: c# .net math floating-point double