c# String formatting an Integer to a Decimal - c#

I need help on C# string formatting an integer to a decimal. I cannot find a way to do this.
How can I convert an integer number like "45099" to a decimal like "450.99"?
Txs in adv
Ariel

decimal d = (decimal)45099 / 100;

Related

C# convert large binary string to decimal string and divide

I want to convert a large binary string to decimal string format and then divide by an integer. (The result must have at least 2 decimal places).
For example,
strBinary = "01010000010010110000001100000100000010100000000000000000000000000000000000000000101010000111100111011110010001100000101111000110110100101000101000011100010111000000000000000000000111000101110000000000000000000010011100000000000001110000000001100001011100110111001101100101011101000111001100101111011001000110010101110110011010010110001101100101011100110010111101100100011001010111011001101001011000110110010101011111011000010111001101110101011100110101111101111010011001010110111001110111011000010111010001100011011010000010111001101010011100000110011111111110110010100000000000000000000000000000000000000000111111111101100011111111111000010000000000011000010001010111100001101001011001100000000000000000010010010100100100101010000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111101100000000000001000101000100011101010110001101101011011110010000000000000001000000000000010000000000000000000000000001000110000000000000000011111111111000010000001100101101011010000111010001110100011100000011101000101111001011110110111001110011001011100110000101100100011011110110001001100101001011100110001101101111011011010010111101111000011000010111000000101111001100010010111000110000001011110000000000111100001111110111100001110000011000010110001101101011011001010111010000100000011000100110010101100111011010010110111000111101001000101110111110111011101111110010001000100000011010010110010000111101001000100101011100110101010011010011000001001101011100000100001101100101011010000110100101001000011110100111001001100101010100110111101001001110010101000110001101111010011010110110001100111001011001000010001000111111001111100010000000111100011110000011101001111000011011010111000001101101011001010111010001100001001000000111100001101101011011000110111001110011001110100111100000111101001000100110000101100100011011110110001001100101001110100110111001110011001110100110110101100101011101000110000100101111001000100010000001111000001110100111100001101101011100000111010001101011001111010010001001000001";
I want -
strDecimal = ConvertBinaryToDecimalString(strBinary);
Now I want to divide the decimal string by an integer and store the result -
strDivResult = DivideLargeNumber(strDecimal, 5);
I do not want to use BigInteger or BigDecimal for this purpose.
I referred these answers, however did not get what I am looking for, with a fast operation -
Convert a "big" Hex number (string format) to a decimal number (string format) without BigInteger Class
https://www.geeksforgeeks.org/divide-large-number-represented-string/
Appreciate your help. Thanks.

Rounding and formatting the nullable decimal in c#

Im using the below code to round the decimal to 2 decimal places.
decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0;
But converting numberlike 512->512.00 is not working..How do i do that?
Decimal.Round rounds the value of the decimal. For example 512.123 to 512.12.
What you want is a string representation. You need to format the value instead of rounding. You can use ToString() for that:
decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0;
string RTimeAsString = RTime.Value.ToString("0.00");
or string.Format or string interpolation like this:
string RTimeAsString = string.Format("{0:0.00}", RTime);
string RTimeAsString = $"{RTime:0.00}"
I think you are confusing rounding and formatting.
What you are doing is rounding and it works.
What you expect is formatting, ie. the way it is displayed on screen. For this you should use the .ToString() method with a corresponding format.

"Double" data type formatting [duplicate]

I want to convert this string: 0.55000000000000004 to this double: 0.55.
How to do that?
you can use this code to reduce precision part:
double m = Math.Round(0.55000000000000004,2);
Result would be : 0.55
Is a string or a double?
If it is a string:
double d = double.Parse(s,CultureInfo.InvariantCulture);
string s=string.Format("{0:0.00}",d);
if it is already a double just format using the second line.
There is no double 0.55 - the number cannot be accurately represented as a binary fraction. Which is probably the reason why you got that long string in the first place. You should probably be using the decimal type instead of double.
Read The Floating-Point Guide to understand why.

Convert a string to double

I need help converting a string to double with 7 decimals. I have a string "00000827700000" and need it converted to 82.77
Tried using String.Format() with {0:N7} without success.
It looks like you could use:
decimal x = decimal.Parse(text.Substring(0, 7) + "." +
text.Substring(7),
CultureInfo.InvariantCulture);
That would actually parse it to 82.7700000, as decimal preserves trailing zeroes (to an extent) but maybe that's good enough? It not, you could change the second argument to
text.Substring(7).TrimEnd('0')
Note that I'd strongly recommend you to at least consider using decimal instead of double. You haven't explained what this value represents, but if it's stored as decimal figures which you need to preserve, it smells more like a decimal to me.
Based on the edit, it could be simplified as
var text = "00000827700000";
var x = decimal.Parse(text, CultureInfo.InvariantCulture) / 10000000;
Console.Write(String.Format("{0:N7}", x));

parsing float into string

I have a number like so: 4.47778E+11
Can anyone give me a way of converting that into its number representation easily in c#?
Thanks
string s = "4.47778e+11";
double d = double.Parse(s);
or
string s = "4.47778e+11";
if (double.TryParse(s,out d))
{
// number was parsed correctly
}
or for internationalization
double.Parse("4.47778e+11", System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture);
Try this MSDN thread. It's called scientific notation by the way, and a quick google normally solves simple issues.
That's assuming you mean parsing from a string to a float, your question & title are conflicting
Use
float num = Convert.ToFloat(Convert.ToDouble(s));
But you still lose precision, floats are only precise to 7 digits, so you're better off using just the Convert.ToDouble() (precise to 15 or so digits), so you won't lose any digits in your example.
Use Convert:
double value = Convert.ToDouble("4.47778E+11");

Categories