如何在c#中使用双位按位转换double值。 我有方法javascript使用双按位
var i= 0.0008590;
var j= 0.000002;
~~(i / j) * j
console.log(i );
/*
i=0.0008579999999999999
*/
答案 0 :(得分:1)
JavaScript中的双补码是将值转换为32位整数的技巧,小数值被截断(不是天花板或地板,而是舍入为零)。 C#具有此类转换的明确语法:(int)value
。
var i = 0.0008590;
var j = 0.000002;
var result = (int)(i / j) * j;
Console.WriteLine(result);
结果约为0.000858
或者你可以省略类型转换方面而只是截断:
var i = 0.0008590;
var j = 0.000002;
var result = Math.Truncate(i / j) * j;
Console.WriteLine(result);
一个优点是,对于导致i / j
超出整数范围的输入,它没有有趣的行为。