C# 和 PHP 使用相同的代码逻辑显示两个不同的计算结果

标签 c# php logic

我有两组代码,一组用 PHP 编写,一组用 C# 编写,两者显示的值略有不同。

下面是 C# 示例:

decimal dayrate = l.dRate * balance / 36500;
Console.WriteLine("dayrate: {0}", dayrate); //dayrate output = 0.0582191780821917808219178082

PHP 示例:

$dayrate = $row['dRate'] * $balance / 36500; 
echo "Dayrate: $dayrate"; //dayrate output = 0.058219178082192

为什么会这样,能否在 PHP 示例中更正。

最佳答案

你遇到了精度问题。

  • C# 十进制类是一个 128 位十进制值,精确到大约 28 位小数。
  • PHP 的 FLOAT 类是一个 64 位十进制值,精确到大约 15 位小数。

您可以通过在 PHP 中使用任意大小的小数来解决此问题:

BC Math

或者通过使用 C# 中的 double 类,它与 PHP Float 类匹配。

如果您需要这些值完全匹配,并且在使用无理数时遇到问题,您将无能为力。您应该查看您的程序要求并确定所需的精度,然后将值四舍五入或截断到该精度。

关于C# 和 PHP 使用相同的代码逻辑显示两个不同的计算结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37277157/

相关文章:

我的代码中的 Java 逻辑

c++ - 枚举到 char * - 在 boost 时间之前询问了这个无答案的 q‌u‌e‌s‌t‌i‌o‌n

c# - 在运行时确定我自己的应用程序的哈希值?

c# - 如何优化这段代码

php - WP——按类别获取帖子?

php - Laravel 减少查询

php - Joomla 数据库定制

php - 轮类时间计算问题

用于在 HTML 中查找带有输入标签的表单的 C# 正则表达式?

c# - Mimick C++在C#中使用 union 嵌套结构