|
|
If I put the values 5 and 2 in the TextBoxes txtValor1 and txtValor2,
in the TextBox txtResultado appear 2 and not 2.5 .
Why?
My code is:
<br />
long valor1,valor2;<br />
double resultado;<br />
<br />
valor1 = int.Parse(txtValor1.Text);<br />
valor2 = int.Parse(txtValor2.Text);<br />
<br />
if (opcDivide.Checked)<br />
{<br />
resultado=valor1/valor2;<br />
txtResultado.Text=Convert.ToString(resultado);<br />
}<br />
<br />
Thanks.
|
|
|
|
|
when you divide this two values try to cast and initialize to result
spaps
|
|
|
|
|
THe Result has to be cast into string...
TxtResult.Text= result.ToString();
-Sreejith
|
|
|
|
|
What did the debugger indicate?
Vasudevan Deepak Kumar
Personal Homepage Tech Gossips
A pessimist sees only the dark side of the clouds, and mopes; a philosopher sees both sides, and shrugs; an optimist doesn't see the clouds at all - he's walking on them. --Leonard Louis Levinson
|
|
|
|
|
PeterRoman wrote: If I put the values 5 and 2 in the TextBoxes txtValor1 and txtValor2,
in the TextBox txtResultado appear 2 and not 2.5 .
Why?
Because the result of an integer division is an int. Thus the correct answer for 5/2 is 2.
If you want an answer of 2.5 you must use doubles.
|
|
|
|
|
<br />
<br />
double valor1,valor2;<br />
double resultado;<br />
<br />
valor1 = (double) txtValor1.Text;<br />
valor2 = (double) txtValor2.Text;<br />
<br />
if (opcDivide.Checked)<br />
{<br />
resultado=valor1/valor2;<br />
txtResultado.Text=Convert.ToString(resultado);<br />
}<br />
<br />
<br />
You code will fall over as soon as some bright spark enters a non number into your texbox, put a validator on it.
|
|
|
|
|
Though this isn't particularly robust code. Better would be to use something like:
double valor1, valor2;<br />
double resultado;<br />
<br />
if (!double.TryParse(txtValor1.Text, valor1))<br />
{<br />
valor1 = 0;<br />
}<br />
if (!double.TryParse(txtValor2.Text, valor2))<br />
{<br />
valor2 = 0;<br />
}<br />
<br />
if (opcDivide.Checked)<br />
{<br />
try<br />
{<br />
resultado = valor1/valor2;<br />
txtResultado.Text = resultado.ToString();<br />
}<br />
catch (DivideByZeroException e)<br />
{<br />
txtResultado.Text = "Error";<br />
}<br />
}
HTH
Dave
It definitely isn't definatley
|
|
|
|
|
Hi,
two comments:
1.
moon_stick wrote: if (!double.TryParse(txtValor1.Text, valor1))
{
valor1 = 0;
}
can be simplified to double.TryParse(txtValor1.Text, valor1)
which does exactly the same, given the following from MSDN:
"When this method returns, contains the double-precision floating-point number equivalent to
the s parameter, if the conversion succeeded, or zero if the conversion failed. The conversion
fails if the s parameter is a null reference (Nothing in Visual Basic), is not a number in a
valid format, or represents a number less than MinValue or greater than MaxValue. This
parameter is passed uninitialized."
2.
It would be better to produce some error indication when TryParse fails.
With your code:
- a mistake in valor1 results in zero, which may be confusing
- a mistake in valor2 results in a divide by zero with a misleading error text
Luc Pattyn [Forum Guidelines] [My Articles]
this months tips:
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use PRE tags to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Hi Luc,
Of course you're right - I just couldn't be bothered checking the MSDN documentation to see what was returned if the cast failed sp decided to try and cover my bases.
I was treating the code as if it were working on a simple calculator and limited the range of error messages. In any case, I said it was better, not perfect!!
Dave
It definitely isn't definatley
|
|
|
|
|
This code is very good and the Dave too.
Thanks.
|
|
|
|
|
Can I work with linq using visual 2005 ?
Is there any kind of extension ?
Does it also mean that I can use xlinq (linq to xml) ?
|
|
|
|
|
It may be possible, if you have the .NET Framework 3.5, to use the Linq namespace in Visual Studio 2005, but you will not be able to use the LINQ syntax as they are a part of the C# 3.0 compiler. But since this syntax is just sugar that compiles down to using the appropriate classes then you can probably still use it, it will just not look as pretty.
|
|
|
|
|
Linq has been introduced as part of .NET 3.5, which doesn't run in VS2005. I'm afraid you need one of the VS2008 editions. Once you get it, you can use DLinq and XLinq to your hearts content.
|
|
|
|
|
You can use LINQ in almost any data source, its the higher level code that uses it not the backend database.
|
|
|
|
|
Hi Guys,
I need to create an Application in C#/ASP.NET which can create an Website in SharePoint 2007.
Please send me information regarding this.
thank you
Mohamed Nazeem
Software Engineer
Bangalore
|
|
|
|
|
hai i need to open an excel file when i click on the open button i need to open in visible mode of excel file it means just display the excel file using c#
|
|
|
|
|
maybe this helps u:
exap = new Microsoft.Office.Interop.Excel.ApplicationClass();
if (exap == null)
{
MessageBox.Show("can't load excel");
System.Windows.Forms.Application.Exit();
}
exap.Visible = true;
|
|
|
|
|
Hi
I'm developing a tool that manages a lot of bitmaps, and very big ones; at some point it hits the 1gb limit that all windows apps have and it causes an "out of memory" exception.
The out of memory exception is expected due to the amount of bitmaps loaded, no memory leaks nor bad memory management.
I developed a "image server" that loads the images on demand, and if it hits an out of memory exception, it is able to temporarily release least recently used images.
Now, what I would like to do (and I have absolutely no idea on how to do it), is to capture the "out of memory" exception for the whole application, essentially, these are the events I would like to control:
- somewhere in the application an amount of memory is requested
- there's not enough memory and an "out of memory" exception is thrown
- "somehow", trap the exception, and call the image server to free some resources
- retry again the allocation, and if successful, continue executing the app normally.
- if the retry fail, try again to free some more resources (if possible), and if it is not possible, finally throw the "out of memory" exception.
Is this possible? I'm pretty new to C#, but I guess that, since the GC is in charge of managing the memory, trapping the memory allocation exception should have to be done through the GC api, right?
Thanks in advance
|
|
|
|
|
Are you calling Dispose on your bitmaps when you're done with them ?
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
yes, I'm calling dispose as soon as I don't need them. As I said, the out of memory exception is expected, due to the size of the bitmaps being loaded
|
|
|
|
|
Hi,
you may want to read up on the WeakReference class; it allows to hold on to as much data
as possible without ever hitting an out-of-memory situation.
Luc Pattyn [Forum Guidelines] [My Articles]
this months tips:
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use PRE tags to preserve formatting when showing multi-line code snippets
|
|
|
|
|
thanks a lot for the WeakReference hint, I've read a bit about it and it looks exactly what I'm looking for!
|
|
|
|
|
Hello,
I'd like to Resize a control that contains any text.
If I use TextRenderer.MeasureText there is always a Padding, also if I use the Flag NoPadding:
Size size = TextRenderer.MeasureText("dddd", this.Font, new Size(Int32.MaxValue, Int32.MaxValue), (TextFormatFlags.NoPadding));
I found out that i need to set a IDeviceContext like that:
private void MyControl_Paint(object sender, PaintEventArgs e)<br />
{<br />
Size size = TextRenderer.MeasureText(e.Graphics, "dddd", this.Font, new Size(Int32.MaxValue, Int32.MaxValue), (TextFormatFlags.NoPadding));<br />
}
My Problem is:
I dont want to Resize the Control in the Paint-Event, so I guess I need to get somehow the current IDeviceContext, but how?
Or do I use the TextRenderer.MeasureText method in a wrong way?
Thank You for Your Answers!
|
|
|
|
|