将javascript双按位转换为c#

时间:2018-06-16 03:03:20

标签: javascript c# double bit-manipulation

如何在c#中使用双位按位转换double值。 我有方法javascript使用双按位

var i= 0.0008590;
var j= 0.000002;
~~(i / j) * j
console.log(i );
/*
i=0.0008579999999999999
*/

1 个答案:

答案 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超出整数范围的输入,它没有有趣的行为。