[Mono-bugs] [Bug 557689] New: System.Math::Round gives incorrect results

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Nov 23 05:41:18 EST 2009


http://bugzilla.novell.com/show_bug.cgi?id=557689

http://bugzilla.novell.com/show_bug.cgi?id=557689#c0


           Summary: System.Math::Round gives incorrect results
    Classification: Mono
           Product: Mono: Class Libraries
           Version: SVN
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Core
        AssignedTo: jbevain at novell.com
        ReportedBy: lambourg at adacore.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=328940)
 --> (http://bugzilla.novell.com/attachment.cgi?id=328940)
reproducer

User-Agent:       Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us)
AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

Loading the largest float64 number strictly lower than 0.5, and calling
Math.Round gives 1, while it should always return 0, whatever the
ModpointRounding value given.

The following il code demonstrates the issue:

      ldc.r8 float64(0x3FDFFFFFFFFFFFFF) // largest r8 number strictly less
than 0.5
      ldc.i4.1 // away from zero value
      call float64 class [mscorlib]System.Math::Round(float64, valuetype
[mscorlib]System.MidpointRounding) // expected result is 0, as 0.4999999999
should always be rounded to 0, whatever the MidpointRounding value
      call void class [mscorlib]System.Console::WriteLine(float64)

The output is 1 on mono, while it should be 0.

I tested this incorrect behavior on both linux (x86, x86_64) and osx (x86),
with very recent snapshots of mono.

Reproducible: Always

Steps to Reproduce:
1.compile the attached file (ilasm /exe testfloat.il)
2.run the example (mono ./testfloat.exe)
Actual Results:  
displays 1

Expected Results:  
should display 0

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list