c# - C#浮点/双差依赖于平台
问题描述
当涉及到 C# 中的 x64 和 x86 平台时,我在 Double/Float 上有一些奇怪的行为。
一个简单的测试在这里:
float testVar= 50;
double test = 1/ testVar* 1e6; (1e6 is double)
test == 19999.9995529652 for x64 and test == 20000 for x86
然而:
double test = 1 / 50f *1e6; (1e6 is double)
test == 19999.9995529652 for both platforms
我知道,x64 和 x86 之间的计算是不一样的(在 x86 上具有扩展计算的 FPU 和在 x64 上具有 SSE2 的 FPU),但真正打动我的是 x64 和 x86只有在计算和直接分配 float testVar 时表现不同计算出来没有区别。
有谁知道为什么?
解决方案
推荐阅读
- html - 如何在 CSS 中创建响应式箭头指针形状?
- javascript - 循环遍历对象数组并替换属性的最简洁方法
- python - 如何在ffmpeg视频中每秒获得1帧到图像?获得比预期更多的图像
- sql-server - 用于 SQL Server 和 VB.NET 应用程序的 MultipleActiveResultSets
- windows - Windows Server:将保存的日志文件导入现有日志
- mysql - 如何使用角度更新下拉列表的值?
- sql - 计算一天中每个小时的包裹数量
- javascript - odoo 14:在 render_buttons 中得到 $node 未定义
- ssas - SSAS 为某个维度值添加度量值
- c++ - std::inclusive_scan 和 std::partial_sum 的范围版本?