How to hide fractional part if it is zero? [duplicate] - c#

This question already has answers here:
How do I format a double to a string and only show decimal digits when necessary?
(2 answers)
Closed 9 years ago.
How to hide fractional part of a double or float number if it is all zero. I am converting a floating point number to string and its display Mantissa part even if it is zero. For example:
double number = 123.00;
string strNumber = number.ToString(); // it shows "123.0", what I need is only "123"
double secondNumber = 123.2234;
string strSecondNumber = secondNumber.ToString(); // it shows "123.2234" as needed.
Is there any built-in solution in .NET to get it done?
Thanks

Try using the overload of double.ToString() that takes in a format string, and pass it "R":
double number = 123.00;
string strNumber = number.ToString("R");
double secondNumber = 123.2234;
string strSecondNumber = secondNumber.ToString("R");

Related

Problem in converting string into double in C# [duplicate]

This question already has answers here:
String to decimal conversion: dot separation instead of comma
(8 answers)
Closed 6 months ago.
I need a program that takes two inputs from the user and perform a calculation. Those inputs need to be double datatype.
The problem I'm facing is that: the program receives a decimal value with dot separator, but when converting it to double, it loses the decimal value. For example, input from the user is 2.5, but when converting it becomes 25.
When the user type 2,5 it is correctly converting it to 2.5
Here's my code example:
Console.WriteLine("Var1: ");
string? v1 = Console.ReadLine();
Console.WriteLine("Var2: ");
string? v2 = Console.ReadLine();
double v1Double = Double.Parse(v1);
double v2Double = Double.Parse(v2);
Console.WriteLine($"Var1: {v1Double}");
Console.WriteLine($"Var2: {v2Double}");
Console.WriteLine($"Multiplication: {v1Double * v2Double}");
Here's what I'm getting when with dot separator:
Here's what I'm gettig when comma separator:
Can anyone help me how to address this problem?
You could use NumberFormatInfo for this problem like so:
NumberFormatInfo provider = new NumberFormatInfo();
provider.NumberDecimalSeparator = ".";
provider.NumberGroupSeparator = ",";
double doubleVal = Convert.ToDouble(YOUR_STRING, provider);

How to remove the decimal point from string c# [duplicate]

This question already has answers here:
How remove decimal part from string?
(3 answers)
Closed 1 year ago.
I want to remove decimal point from string.
I try with this code but not work for me:
string wSpeed = Math.Round(weatherBindingData.WeatherDataCurrent.Wind.Speed) * 3.6 + "km/h";
WindSpeed.Text = wSpeed;
I want to remove the decimal point, but with this code I receive a values with decimal point.
How is the correct way to remove the decimal point?
Use formatting:
string wSpeed = $"{Math.Round(weatherBindingData.WeatherDataCurrent.Wind.Speed) * 3.6:0}km/h";
Or what you more likely want:
string wSpeed = $"{weatherBindingData.WeatherDataCurrent.Wind.Speed * 3.6:0}km/h";

how to convert from double to exponential notation in c# [duplicate]

This question already has an answer here:
C# how to convert a double to string with exponential notation
(1 answer)
Closed 6 years ago.
How to convert double number to exponential notation in c#?
My number
I would like number will look like:
-1.6500000000000000e1
I looks on the article:
C# how to convert a double to string with exponential notation
But this didn't fully answer me:
number.ToString("e16", CultureInfo.InvariantCulture)
provide me number looks like:
-1.6500000000000000e+001
I would like at the end only e1 for non negative, or e-1 for negative
Thanks!
Try using formatting:
Double value = -1.6500000000000000e1;
// e15 - exponential form, small "e" for exponent, 16 digits
String result = value.ToString("e16", CultureInfo.InvariantCulture);
Console.Write(result);
Edit: in case you want "e1" form of exponent, you should specify it like this:
String result = value.ToString("0.0000000000000000e0", CultureInfo.InvariantCulture);

Set 0 at Decimal place if no value found [duplicate]

This question already has answers here:
C# convert int to string with padding zeros?
(15 answers)
Closed 9 years ago.
I need to set “0” at the end of the decimal place dynamically if less integer number found after decimal place.
Suppose we have value: “535.8”
Now I need to set it as “535.800”
I have following code:
string cost = "535.8";
string decplace = "3";
decimal price = decimal.Round(Convert.ToDecimal(cost), Convert.ToInt32(decplace));
Console.WriteLine(price);
Console.ReadLine();
Unable to get 535.800.
How can I achieve this?
You can convert price to string and show upto 3 decimal places with 0's at end.
string cost = "535.8";
string decplace = "3";
decimal price = decimal.Round(Convert.ToDecimal(cost), Convert.ToInt32(decplace));
//string.Format("{0:N2}", price);
Console.WriteLine(string.Format("{0:N3}", price));
price.ToString("N3")
Standard Numeric Format Strings: The Numeric ("N") Format Specifier
So if the number of decimal should be dynamic:
int numDecimalPlaces = 3;
Console.WriteLine(price.ToString("N" + numDecimalPlaces));
You can use string.Format() to make it possible:
Console.WriteLine(string.Format("{0:N3}", d));
So in your code:
string cost = "535.8";
string decplace = "3";
decimal price = decimal.Round(Convert.ToDecimal(cost), Convert.ToInt32(decplace));
Console.WriteLine(string.Format("{0:N" + decplace + "}", price);
Console.ReadLine();

How to trim decimal? [duplicate]

This question already has answers here:
Truncate Decimal number not Round Off [duplicate]
(10 answers)
Closed 9 years ago.
I have a decimal number :
decimal a = 0.8537056986486486486486486486;
I want to show it as string with only 8 digit after point :
a equals -> "0.85370569".
How can I do it ?
For example, like this:
a.ToString("0.00000000");
Try using
a.ToString("D8");
This should convert it to the correct format.
Edit:
As said in the comments, D is only used for integral types, thus not for decimals and such.
Use
static void Main(string[] args)
{
decimal d = (decimal)0.8537056986486486486486486486;
Console.WriteLine(d.ToString("N8"));
Console.ReadLine();
}
instead.
This will format it to 0.85370570
To perform this numerically you could use:
decimal a = (decimal) 0.8537056986486486486486486486;
String test = (Math.Truncate(100000000 * a) / 100000000).ToString();
decimal a = 0.8537056986486486486486486486;
var v= a.ToString("#.########");

Categories