2 pages: 1 2
 Why does Math.Round(0.045, 2) return 0.04 instead of 0.05? Options
codeling
 Posted: Tuesday, July 25, 2017 2:17:41 PM

 Rank: Advanced Member Groups: Member Joined: 12/11/2015 Posts: 938 Points: 3945

In C#, the result of Math.Round(0.045, 2) is 0.04. It is supposed to be 0.05, isn't it?

 Posted: Tuesday, July 25, 2017 2:17:41 PM
codeling
 Posted: Tuesday, July 25, 2017 2:34:55 PM

 Rank: Advanced Member Groups: Member Joined: 12/11/2015 Posts: 938 Points: 3945

Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double) method may not appear to round midpoint values to the nearest even integer. In the following example, because the floating-point value .1 has no finite binary representation, the first call to the Round(Double) method with a value of 11.5 returns 11 instead of 12.

using System;

public class Example
{
public static void Main()
{
double value = 11.1;
for (int ctr = 0; ctr <= 5; ctr++)

Console.WriteLine();

value = 11.5;
}

{
Console.WriteLine("{0} --> {1}", value, Math.Round(value));
return value + .1;
}
}
// The example displays the following output:
// 11.1 --> 11
// 11.2 --> 11
// 11.3 --> 11
// 11.4 --> 11
// 11.5 --> 11
// 11.6 --> 12
//
// 11.5 --> 12

codeling
 Posted: Tuesday, July 25, 2017 3:10:57 PM

 Rank: Advanced Member Groups: Member Joined: 12/11/2015 Posts: 938 Points: 3945

Math.Round Method (Double)

Rounds a double-precision floating-point value to the nearest integral value.

public static double Round( double a )

Parameters

a

Type: System.Double

A double-precision floating-point number to be rounded.

Return Value

Type: System.Double

The integer nearest a. If the fractional component of a is halfway between two integers, one of which is even and the other odd, then the even number is returned. Note that this method returns a Double instead of an integral type.

codeling
 Posted: Tuesday, July 25, 2017 3:11:34 PM

 Rank: Advanced Member Groups: Member Joined: 12/11/2015 Posts: 938 Points: 3945

Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double) method may not appear to round midpoint values to the nearest even integer. In the following example, because the floating-point value .1 has no finite binary representation, the first call to the Round(Double) method with a value of 11.5 returns 11 instead of 12.

using System;

public class Example
{
public static void Main()
{
double value = 11.1;
for (int ctr = 0; ctr <= 5; ctr++)

Console.WriteLine();

value = 11.5;
}

{
Console.WriteLine("{0} --> {1}", value, Math.Round(value));
return value + .1;
}
}
// The example displays the following output:
// 11.1 --> 11
// 11.2 --> 11
// 11.3 --> 11
// 11.4 --> 11
// 11.5 --> 11
// 11.6 --> 12
//
// 11.5 --> 12

Users browsing this topic
Guest
 2 pages: 1 2

 Forum Jump Digcode.com - Digcode Announcements - Suggestions and Comments Software Engineering - Domain and Requirements Analysis - Object-Oriented Analysis and Design - Software Development Methodologies Development and Programming - C# and .NET - C and C++ - HTML, CSS, Javascript, jQuery and PHP - XML Technologies - SQL Programming System and Application Softwares - Microsoft Windows, Azure and Office Suite - Application Development Platforms --- Microsoft Visual Studio & Team Foundation Server --- Microsoft SharePoint Server - Database Servers --- Oracle Database --- Microsoft SQL Server - Internet Browsers --- Internet Exploer --- Microsoft Edge --- Google Chrome --- Mozilla Firefox - Tools and Utilites IT News, Careers and Deals - IT News - IT Careers and Jobs - IT Deals and Coupons You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot delete your posts in this forum. You cannot edit your posts in this forum. You cannot create polls in this forum. You cannot vote in polls in this forum.