C# - Understanding Floating Point Limitations In Calculations
Jan 12, 2011
How to determine when floating point limitations will cause errors in your calculations. For example the following code.
CalculateTotalTax = function (TaxRate, TaxFreePrice) {
return ((parseFloat(TaxFreePrice) / 100) * parseFloat(TaxRate)).toFixed(4);
};
I have been unable to input any two values that have caused for me an incorrect result for this method. If I remove the toFixed(4) I can infact see where the calculations start to lose accuracy (somewhere around the 6th decimal place). Having said that though, my understanding of floats is that even small numbers can sometimes fail to be represented or have I misunderstood and can 4 decimal places (for example) always be represented accurately.
MSDN explains floats as such... This means they cannot hold an exact representation of any quantity that is not a binary fraction (of the form k / (2 ^ n) where k and n are integers). Now I assume this applies to all floats (inlcuding those used in javascript). How can one determine if any specific method will be vulnerable to errors in floating point operations, at what precision will those errors materialize and what inputs will be required to produce those errors?
I am writing a custom totaling method for a grid view. I am totaling fairly large numbers so I'd like to use a decimal to get the total. The problem is I need to control the maximum length of the total number. To solve this problem I started using float but it doesn't seem to support large enough numbers, I get this in the totals column(1.551538E+07). So is there some formating string I can use in .ToString() to guarentee that I never get more then X characters in the total field? Keep in mind I'm totaling integers and decimals.
Dim L16, L23, L45, t As Double Dim LBase, LAdjacent, LOpposite As Double L16 = 20
[Code].....
Both equations should be equivalent: I've simply replaced L16 with LBase, L23 with LAdjacent and L45 with LOpposite. Yet the first equation outputs 3586 while the second outputs 3587.
I'm using Visual Basic 2010 Express to edit an XML file. I want to replace items that have (typically) non-zero floating point numbers with a single zero.
I will get an error message. I tried something like
Code: Public ObjectPoint As PointF Dim cpoint As New PointF() cpoint.ObjectPoint = New PointF(startX, startY) e.Graphics.DrawEllipse(Pens.Blue, cpoint.ObjectPoint, 0.4, 0.4)
but it didn't work for the location and the circle size. How to draw a circle(and rectangle) by using floating point numbers?
I think this should be a very basic question. Anyways, when trying to run the script:
[Code]...
I get an "invalid floating point operation" error, and the line "c = Log(a+1.0)/(b/2.0)" gets highlighted. Then, without making any changes whatsoever, I run the script again, and it works perfectly, outputting the value 0.2773... How can I fix this, so that it works right the first time?
I hve been working with points a lot recently, and I have been wondering if there is a way to set a point without setting point.x and point.y separately. For example for (3, 5): Point1 = (3, 5) But that isn't right
I am using the WebBrowser control in a windows form C# project and wanted to know if there are any limitations of how many instances of such application you can have running at the same time. (in other words does MSFT enforce any limitations other than physical machine limits - CPU/memory etc)
For my next project i'll have to create a TCP or UDP server based application. I know how to program a server but i am interested on the limitations of such servers.
how many connections a server may be able to handle at the same time. I suspect that this limitation is based on the type of transfer and how much data or how often it is send to the server.
I also read somewhere that a windows program is limited to 25 threads (connections) per core so if i would have a quad core i can have a maximum of 99 connections granted that the server itself is also a thread. Is that correct?
If the above is correct i wonder how to handle let's say 200 users at the same time. There must be some form / way to handle bigger request loads.
I want to use the free express edition but am concerned about limitations. Wikepedia mentions "Limited options for debugging and breakpoints" as one limitation. None of of the other limitations mentioned concerned me.
I am loading a considerable amount of data from SQL into Excel. For specific reasons, I need to use the Resize method with an array when loading data to Excel.I have found a condition where the size of a cell/row causes the Resize method to crash. I have not found any doco anywhere that shows a Resize limit. My array is OK. My code is OK. But, the data for one row is very large - one field that I am trying to load to a cell has 1097 characters. I have breakpointed the code to assure that this one is the culprit.[code]Does anyone know of any size limits when using Resize. The total number of bytes being written to the row is 1402.Anyone know limits on length for Resize or "overrides" to handle this?
As an OSS library author, I've always tried to make my stuff CLS compliant. But MS doesn't make this easy. They often put you in catch-22 situations, such as the following:You cannot have a protected variable differing only in case from the public property.You cannot have protected or public variables starting in an underscore or 'm_'. If you want to make a class really extensible, you often need to have protected variables matching public properties. Your least ugly exit is to add a suffix to the variable, like "Var" or "Value". That's nasty and unacceptable to me. I like clean code.I know of no .NET languages that don't support variables starting in an underscore, and I've used them in many places where the variable needs to be visible to subclasses.
I'm tired of the warnings, and I'm planning on turning off CLS compliance at the assembly level on my 30+ C# libraries.Are there any actual problems with turning off CLS compliance on libraries? Any real problems with doing this? Microsoft has issued unheedable guidance on software for decades, with less that 5% of it being worth the bytes it was encoded in. I can't find any evidence that this best practice has any real effect on anything. But, to be careful, I'm checking. And no, this is not a duplicate of the inverse of this question: Any reason not to mark a DLL as CLSCompliant?I'm looking for actual results and effects here, not the advice of a MS intern. For example, if IronPython, IronRuby, or F# are unable to read or write a variable starting with an underscore, that's an effect, although it would only cause a problem for users subclassing certain objects. If a language or tool is completely unable to use an assembly unless it is marked CLS compliant, now that's a big deal.
I have this program that uses OLEDB connection to import excel file to data table then use it in other functions.Now I have this question: What are the possible limitations of OLEDB when it reads the Excel file. The File is on xls format, and I want to know if there is such limitations(for example: It has limitation in reading value on a cell).
I have a Diagonal line drawn on a picture box on my forum and i need to know if the user has clicked the line I have the Start point and End Point of the Line and the mouse x,y location So i basically need to find out if the x,y of the mouse is on the line.
I'm trying to extract a piece of text from within the string, defining both a starting point and an ending point. For instance, say I want to search for the text found between "That is a " and " car" in the string "That is a red car", so it would return "red".I know you can use .SelectionStart and SelectionLength, but the length of the word can change, so the selection length can vary. What I want is to establish a specific starting point and a specific ending point from which to extract the text from the string.
i have a picturebox which displays a map i have 2 modes add point and delete point when the user clicks the picture it creates a point on the picture where the user has clicked that works perfectly its when i try and delete the point when it doesent work :/ i have all the points loading from an xml file this is the code i have:
[Code]...
basicly i want it to when the user clicks the point it fines the x any y in the xml delete the node then delete all the points on the map then reload them all according to the xml
I'm trying to calculate the direction between two points on a two-dimensional grid. Actually I want to determine if that vector is within a range of two values. Suppose the grid's origin is 0,0 at the upper left corner, and 0 degrees represents north. I have a point A on that grid. I want to know if a line from point A to point B on the grid is within a range of directions between 111.8 degrees (a little south of east) and 158.2 (a little east of south). Those are approximations; the 111.8 is 90 degrees plus the arctangent of 2/5, and 158.2 is 180 minus that value. I worked out a series of calculations worthy of a medieval astronomer, but I suspect there is a simpler way. I'm going to have to do this for a variety of other vectors, and I'd like to generalize
I know how I can construct an icon setting point by point, but that isn't what I want. I want to use a bitmap file or a jpeg -is easy to convert an jpeg to an bitmap- and built an icon that looks like this picture.
I want to make a drawing application which needs a few drawing functions I cant handle myself as im not very mathematicly inclined The first on the list of functions is to create an arc from a start point, end point and radius. The method signature is as followes.
Function CreateArc(byval StartPoint as PointF, EndPoint as PointF, Raduis as single) As PointF() 'Code to create an array of points...
i want to add a new floating rectangle with an image inside it to my form when i click on a button control and then use a timer control to move it in a straight line across the Form. the problems I'm having are:
1) Drawing and filling the RectangleF on the screen.
2) Animating/moving it from X1,Y1 to X2,Y2
3) Triggering the Drawing and movement with a Button Control
I use IrfanView for screen capture.After activating it (making it ready) it is necessary to use Ctrl & F11 to invoke the actual screen capture selector.how I may achieve a "Floating Key" which would act in the same way as the Ctrl & F11 combination?
I am writing an application that has to read and interpret data stored in some PDF files. The reading part is done but I am only able to get a dump of all the words on a page and not the format of the words. What I mean is that if I have to extract a table, I am getting the numbers in the table but not the markup which defines the table.
Further, there is some formatting used which displays a few of these numbers within parentheses (meaning that those numbers are negative) but the parentheses themselves are not part of the text. Hence, I am not able to distinguish between positive and negative numbers present in the PDF table!
How do you get the PDF markup along with the text? Is a PDF similar in structure to an XML with tags used to markup tables etc.? If not, then, is there a resource which describes the salient features of the PDF DOM? I am using VBA and the Acrobat library (AcroExch etc.)
I have an old fashion Database with several random access files and I need to import the data to a new Sql Server dababase the data. There are tables with 6 Bytes floating numbers fields and we have no Number data type with that length in VB. I tried and tried and... and can't find. I found this code in the ERP folder, is AlphaBasic. It use an envoirement namend A-shell from Microsabio .
I am trying to use my first predicate and I generate the error:Method 'Public Function FindIndex(list As MyProgram.HTMLFiles) As Boolean' does not have the same signature as delegate 'Delegate Function Predicate(Of T)(obj As String) As Boolean'.[code]
I have this RichTextbox in my vb.net form and I would like to when a user click a button, for example to embold the selected text, how would I do this.Also, I do NOT want to use the standard vb.net expressions such as RichTextBox1.SelectedText.Font.Bold = true. I want to do something like RichTextbox1.SelectedRTF="[bold]" & RichTextBox1.SelectedRTF & "[/bold]" or whatever RTF looks like.Can I just add the RTF options random places or can a RichTextBox return an error if the text is in wrong format. I'm mostly looking for info on how to work with RTF without using the standard vb expressions.