Please Help ----- Getting wrong result in C# than VB.Net --- Urgent

P

pargat.singh

Hi Everyone:

Please help as i need to write some rounding function in C#. i
Wrote one but does not give me correct result. Can some one please
correct me

C# Codes

#########################################################################
dblVal = 1234567.89

private int ThreeSifFig(double dblVal)
{
int lngvalue;
int threesigfig;
int lngvaluelen;

lngvalue = (int)(Math.Abs(dblVal));
lngvaluelen = lngvalue.ToString().Length;
if ((lngvaluelen <= 1))
{
threesigfig = 0;
}
else if ((lngvaluelen <= 3))
{
threesigfig = (lngvalue / 10) * 10;
}
else
{
threesigfig = (lngvalue / 10 ^ (lngvaluelen - 3) * 10) ^
(lngvaluelen - 3);
}
if ((dblVal < 0))
{
threesigfig = (threesigfig * -1);
}

return threesigfig;

}


Return Result is 123500 but the expected result is 1230000

###########################################################################

VB.NET code which return correct result
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

Dim sval As Double = 1234567.89
Dim lngvalue, lngvaluelen As Long
Dim threesigfig As Long
lngvalue = Int(Math.Abs(Val(sval)))
lngvaluelen = Len(CStr(lngvalue))
If lngvaluelen <= 1 Then
threesigfig = 0
ElseIf lngvaluelen <= 3 Then
threesigfig = Int(lngvalue / 10) * 10
Else
threesigfig = Int(lngvalue / 10 ^ (lngvaluelen - 3)) * 10
^ (lngvaluelen - 3)
End If
If sval < 0 Then
threesigfig = threesigfig * -1
End If
End Sub

Result is 1230000 [Correct]

Thanks in advance.
 
C

christery

Hi Everyone:

    Please help as i need to write some rounding function in C#. i
Wrote one but does not give me correct result. Can some one please
correct me

C# Codes

#########################################################################
dblVal = 1234567.89

private int ThreeSifFig(double dblVal)
    {
        int lngvalue;
        int threesigfig;
        int lngvaluelen;

        lngvalue = (int)(Math.Abs(dblVal));
        lngvaluelen = lngvalue.ToString().Length;
        if ((lngvaluelen <= 1))
        {
            threesigfig = 0;
        }
        else if ((lngvaluelen <= 3))
        {
            threesigfig = (lngvalue / 10) * 10;
        }
        else
        {
            threesigfig = (lngvalue / 10 ^ (lngvaluelen - 3)* 10) ^
(lngvaluelen - 3);
        }
        if ((dblVal < 0))
        {
            threesigfig = (threesigfig * -1);
        }

        return threesigfig;

    }

Return Result is 123500 but the expected result is 1230000

###########################################################################

VB.NET code which return correct result
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

        Dim sval As Double = 1234567.89
        Dim lngvalue, lngvaluelen As Long
        Dim threesigfig As Long
        lngvalue = Int(Math.Abs(Val(sval)))
        lngvaluelen = Len(CStr(lngvalue))
        If lngvaluelen <= 1 Then
            threesigfig = 0
        ElseIf lngvaluelen <= 3 Then
            threesigfig = Int(lngvalue / 10) * 10
        Else
            threesigfig = Int(lngvalue / 10 ^ (lngvaluelen -3)) * 10
^ (lngvaluelen - 3)
        End If
        If sval < 0 Then
            threesigfig = threesigfig * -1
        End If
    End Sub

Result is 1230000 [Correct]

Thanks in advance.

just speculating but what is ^...

testing

int a = 5;
int b = 2;

int c = a ^ b;

c is 7

a 1001
b 0010
c 1001

Aha, use math.pow instead, oh, and that was not much but a tad off...
hope you arent working for a bank company ;)

//CY
 
C

christery

Hi Everyone:
    Please help as i need to write some rounding function in C#. i
Wrote one but does not give me correct result. Can some one please
correct me
#########################################################################
dblVal = 1234567.89
private int ThreeSifFig(double dblVal)
    {
        int lngvalue;
        int threesigfig;
        int lngvaluelen;
        lngvalue = (int)(Math.Abs(dblVal));
        lngvaluelen = lngvalue.ToString().Length;
        if ((lngvaluelen <= 1))
        {
            threesigfig = 0;
        }
        else if ((lngvaluelen <= 3))
        {
            threesigfig = (lngvalue / 10) * 10;
        }
        else
        {
            threesigfig = (lngvalue / 10 ^ (lngvaluelen - 3) * 10) ^
(lngvaluelen - 3);
        }
        if ((dblVal < 0))
        {
            threesigfig = (threesigfig * -1);
        }
        return threesigfig;
Return Result is 123500 but the expected result is 1230000

VB.NET code which return correct result
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
        Dim sval As Double = 1234567.89
        Dim lngvalue, lngvaluelen As Long
        Dim threesigfig As Long
        lngvalue = Int(Math.Abs(Val(sval)))
        lngvaluelen = Len(CStr(lngvalue))
        If lngvaluelen <= 1 Then
            threesigfig = 0
        ElseIf lngvaluelen <= 3 Then
            threesigfig = Int(lngvalue / 10) * 10
        Else
            threesigfig = Int(lngvalue / 10 ^ (lngvaluelen- 3)) * 10
^ (lngvaluelen - 3)
        End If
        If sval < 0 Then
            threesigfig = threesigfig * -1
        End If
    End Sub
Result is 1230000 [Correct]
Thanks in advance.

just speculating but what is ^...

testing

        int a = 5;
        int b = 2;

        int c = a ^ b;

c is 7

a 1001
b 0010
c 1001

Aha, use math.pow instead, oh, and that was not much but a tad off...
hope you arent working for a bank company ;)

//CY- Dölj citerad text -

- Visa citerad text -
oh...


a 101
b 010
c 101

sorry...

aha´, u dont get it... lets try...

int a = 4;
int b = 1;

int c = a ^ b;

will be 5

a= 100
b= 001
c= 101

Oh, its XOR... *smile*

//CY
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top