6 Floating digit without separator in c# - c#

I am trying to get 11001 as 11001.000000 , I tried ToString("N6"), but it adds separator and output is as: 11,001.000000
How can get the value as a 6 floating digit without separator?

Use F6 instead of N6
int i = 11001;
string result = i.ToString("F6");
Reference: MSDN

To remove the comma separaytor use can use
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator
double d = 11001;
string result = d.ToString("F6").Replace(System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator, "");

int i = 11001;
string result = i.ToString("F6");
Here F in ToString() method is fixed point format specifier.
Number next to F can be used accordingly.
ex if you want 11001.00000, then use ToString("F5");

Related

What is the percentage format string to always display the sign?

I want to display 0.12345 as "+12.3%". Format string "P1" or "p1" gives "12.3%". I have tried both "+P1" and "+p1" to no avail.
string sFoo = 0.12345.ToString("P1");
Update
I should have emphasized that I always want the proper sign, not "+". If the number is -0.12345, "P1" works exactly as I want: "-12.3%".
Not quite using P1, but same result:
0.12345.ToString("+#.#%;-#.#%");
If you prefer at least one leading digit (e.g. "+0.23%" instead of "+.23%"):
0.12345.ToString("+0.#%;-0.#%"));
Same for trailing digits (e.g. "+14.0%" instead of "+14%"):
0.12345.ToString("+0.0%;-0.0%"));
Reference: https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#the--section-separator
var num = 0.12345;
var sign = num > 0 ? "+" : "";
var output = $"{sign}{num.ToString("P1")}";
I'm afraid there is no format string to display the positive sign. I've searched in NumberFormatInfo if some custom format could accept this, but with no avail.
You can however build some extension methods to fit your needs :
public static string ToSignedPercent(this double input)
{
return $"{(input >= 0 ? "+" : "")}{input.ToString("P1")}";
}
// ...
Console.WriteLine((0.12345).ToSignedPercent()); // +12.3%
Console.WriteLine((-0.6789).ToSignedPercent()); // -67.9%
Fiddle
Put the following in your main method. basically this approaches just sets the variable sFoo to have format of percentage with two decimals.
string sFoo = String.Format("Value: {0:P2}.", 0.12345); // formats as 12.35%
Console.WriteLine(sFoo);

How to format a value with a single decimal place using C#

I need to convert some value into decimal. i have done with the below:
Double calculateinputPower="somegivenvalue";
String valuePower="somevalue";
Double calculatePower = Double.Parse(valuePower);
calculatePower = calculatePower - calculateinputPower + calculateErp * 1;
calculatePower = Double.Parse(String.Format("{0:0.0}", calculatePower));
valuePower = System.Convert.ToString(calculatePower);
ERP.Text = valuePower;
if my output value is like
ex:66.2356 -> 66.2 , 32.568 -> 32.5 , 22.35264 ->22.3
i am getting the format which i need exactly but if the output value is like
22,33,11,66,55 something like this then i want convert that value to
22->22.0
33->33.0
11->11.0
66->66.0 how can i get this in C#.
i used myVal.ToString("F"); then i am getting 0.00
if i use ToString("N2"); then i am getting 1,000.00
but i don't want money format or 0.00 format
What exactly i need is single .0 if the value is non decimal.
Just use .ToString("0.0") (Note this uses rounding so 22.26 -> 22.3)
double i = 22.23;
double j = 45;
string si = i.ToString("0.0"); //22.2
string sj = j.ToString("0.0"); //45.0
Try in this way:
valuePower = calculatePower.ToString("F1");
To learn more, follow this link
You need to look at the documentation for the format strings you're using.
You've tried F, which says as you've not specified the precision that the "Default precision specifier: Defined by NumberFormatInfo.NumberDecimalDigits.", which is 2 in your case.
You've tried N2, which says that the 2 is the "Precision specifier: Desired number of decimal places.".
As you only want a single decimal place, use F1 or N1, depending on your formatting requirements.
var number1 = 66.2356d;
var number2 = 66d;
var string1 = number1.ToString("N1"); // 66.2
var string2 = number2.ToString("N1"); // 66.0
See this fiddle.

Parse string and return only the information between bracket symbols. C# Winforms

I would like to parse a string to return only a value that is in between bracket symbols, such as [10.2%]. Then I would need to strip the "%" symbol and convert the decimal to a rounded up/down integer. So, [10.2%] would end up being 10. And, [11.8%] would end up being 12.
Hopefully I have provided sufficient information.
Math.Round(
double.Parse(
"[11.8%]".Split(new [] {"[", "]", "%"},
StringSplitOptions.RemoveEmptyEntries)[0]))
Why not use Regex?
In this example, I am assuming that your value inside the brackets always are a double with decimals.
string WithBrackets = "[11.8%]";
string AsDouble = Regex.Match(WithBrackets, "\d{1,9}\.\d{1,9}").value;
int Out = Math.Round(Convert.ToDouble(AsDouble.replace(".", ","));
var s = "[10.2%]";
var numberString = s.Split(new char[] {'[',']','%'},StringSplitOptions.RemoveEmptyEntries).First();
var number = Math.Round(Covnert.ToDouble(numberString));
If you can ensure that the content between the brackets is of the form <decimal>%, then this little function will return the value between the fist set of brackets. If there are more than one values you need to extract then you will need to modify it somewhat.
public decimal getProp(string str)
{
int obIndex = str.IndexOf("["); // get the index of the open bracket
int cbIndex = str.IndexOf("]"); // get the index of the close bracket
decimal d = decimal.Parse(str.Substring(obIndex + 1, cbIndex - obIndex - 2)); // this extracts the numerical part and converts it to a decimal (assumes a % before the ])
return Math.Round(d); // return the number rounded to the nearest integer
}
For example getProp("I like cookies [66.7%]") gives the Decimal number 67
Use regular expressions (Regex) to find the required words within one bracket.
This is the code you need:
Use an foreach loop to remove the % and convert to int.
List<int> myValues = new List<int>();
foreach(string s in Regex.Match(MYTEXT, #"\[(?<tag>[^\]]*)\]")){
s = s.TrimEnd('%');
myValues.Add(Math.Round(Convert.ToDouble(s)));
}

Convert integer number to three digit

I have an integer variable .if its 1-9 it only displays as "1" or "9", I'm looking to convert the variable to save as 3 digits, ie. "001", or "009", etc. any ideas?
I am using C#,ASP.Net
use
int X = 9;
string PaddedResult = X.ToString().PadLeft (3, '0'); // results in 009
see MSDN references here and here.
What about
var result = String.Format("{0:000}", X);
var result2 = X.ToString("000");
int i = 5;
string tVal=i.ToString("000");
From: https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#DFormatString
The "D" (or decimal) format specifier converts a number to a string of decimal digits (0-9), prefixed by a minus sign if the number is negative.
The precision specifier indicates the minimum number of digits desired in the resulting string. If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier.
Like:
int value;
value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345
value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345
int i = 5;
string retVal = i.ToString().PadLeft(3, '0');
you can use this code also
int k = 5;
string name = $"name-{k++:D3}.ext";

Formatting values

Hi i have a int example as 3 i need to format it as 003 . is the only way is convert to a string and concat and convert back ?
I guess this is what you want:
int n = 3;
string formatted = n.ToString("000");
Alternatively:
string formatted = String.Format("{0:000}", n);
More info here.
You can apply the .ToString("000"); method.
Debug.WriteLine(3.ToString("000"));
You can parse the resulting string value by using int.Parse or int.TryParse:
Debug.WriteLine(int.Parse("003"));
See Custom Numeric Format Strings
If it's an int object, the leading zeros will always be removed, regardless if you convert it to a string and back.
use the pad functionint i = 1;
i.ToString().PadLeft(3, '0');

Categories