我正在尝试使用%operator
获得2倍的余数double x = 965.606698735538;
double y = 482.803349367769;
var mod = x % y;
预期值为0
实际值是482.803349367769
有人可以帮助为什么它的行为如此奇怪。
答案 0 :(得分:3)
这是二进制浮点运算的一个怪癖。
最近的(IEEE754)double
到482.803349367769是482.80334936776898757671006023883819580078125
最接近%
到965.606698735538是
965.6066987355379751534201204776763916015625
正如你所看到的,后者并不是前者的两倍;事实上,它只是不到两倍。这说明了你看到的大部分余数。
将<div id="pageTitleText">[@Model.Item.Key]
@if (!Model.IsUserReadonly && !Model.ReadOnlyCachesList.Contains(Model.CacheName))
{
<span class="itemActions">
<a class="edit" href="@Url.Content("~/caches")/@Model.CacheName/edit?key=@Url.Encode("PICO+")">Edit</a>
<a class="clone" href="@Url.Content("~/caches")/@Model.CacheName/clone?key=@Url.Encode("PICO+")">Clone</a>
<a id="evictItem" class="evict" href="#">Evict</a>
<a id="deleteItem" class="delete" href="#">Delete</a>
</span>
}
</div>
与浮点参数一起使用时需要小心。