2013-05-10 3 views
7

VB.Net код, который мне нужно перевести на C#:C# и VB.Net дают различные результаты для того же уравнения

Dim s = 27/15 Mod 1 //result is 0.8 

же уравнение в C#

var s = 27/15 % 1 //result is 0 

Почему разные ? Является ли мода отличным от двух?

EDIT: Я переводю код с VB на C#, поэтому мне нужно получить тот же результат, что и код VB в моем коде C#.

+2

* Различные языки * разные *. :) –

ответ

17

Разделение отличается между 2.

В VB.NET Вы получаете результат типа с плавающей точкой.

В C# это целочисленное деление (поскольку оба оператора являются целыми числами).

Если вы используете оператор целочисленного деления в VB.NET, вы получите тот же результат:

Dim s = 27 \ 15 Mod 1 

Чтобы получить результат VB.NET в C#, вам необходимо обеспечить один из операторов деления является тип с плавающей точкой:

var s = 27/15.0 % 1; 
var s = 27.0/15 % 1; 
var s = 27.0/15.0 % 1; 
Смежные вопросы