How to convert "Double" to formatted string in VBScript - string

I was working on small script in VB.
I need to format a double number which is result of division.
Thus there could be many digits after decimal places. I need to convert it to String with only two decimals places.
I used to do it in C# with Double.ToString("0.##");
is there any methode like that in VBScript ..
Please help ..
Himanshu

You're going to want the FormatNumber function. FormatNumber(num, 2) will give you the number formatted to 2 decimal points. See the link for more details.
http://www.w3schools.com/vbscript/func_formatnumber.asp

Related

How to remove all decimal points, but retain value In Microsoft Excel?

I need to display with no decimal, but retaining the numbers that
appear after the last decimal. For example, given `03.1037.190
I tried roundup and trunct but not sure how it works.
Try this on a string where . could be on a dynamic spot
=SUBSTITUTE(A1,".","",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))
Or when your string always follows the same pattern ##.####.####.## you could try:
=REPLACE(A1,13,1,"")
The question is quite unclear as you have a value with the same thousand and decimal delimiter and also 4 numbers between the delimiters. It would help a lot if you specified the actual number without thousand delimiters.
Assuming there are no decimals (31.037.190.301): remove "." using:
=SUBSTITUTE(A1,".","")
and Excel will recognize it as a number

How to avoid scientific notation conversion in excel

I want to convert a hex number in excel to two 4 character hex values.
My approach is:
1. I am using TEXT function to convert hex number to 8-character hex.
2. Then, use MID function to extract first 4 characters and other 4 characters.
This approach works fine for most of the cases. However, I have come across a particular scenario, in which, it is failing.
For example,
My hex value is 62823E4. I wanted it to convert to 062823E4. However, internally excel is considering E4 as 10^4 (scientific notation). Formula used is shown in pic above.
Kindly help. Thanks in advance.
The TEXT function operates on numbers, so it will interpret hex data as decimal numbers.
Take a look at HEX2DEC and DEC2HEX functions. If you start with hex strings, you should first extract their values with HEX2DEC. Then, using DEC2HEX you can restore the hex string with the required number of digits.
A1='62823E4
A2=HEX2DEC(A1)
A3=DEX2HEX(A2;8)
A5=LEFT(A3;4)
A6=RIGHT(A3;4)

Parsing apart a decimal into two integers in either Stata or Excel

I'm working with a dataset that has really terrible ID numbers that are an integer followed by a 13 digit decimal. However, the first 6-7 decimal places are zeroes. For example:
10.0000000960554
This is making my life difficult. So I want to parse the IDs apart at the decimal into two integers, drop the leading zeros, and put them back together as one giant integer. However, everything I find for how to do this in Excel keeps the numbers after the decimal after the decimal. For Stata, I've tried to convert the numeric into a string so I can then parse it, but Stata won't let me because it's a decimal:
encode ScrambledID, generate StringID
Here's the error:
not possible with numeric variable
r(107);
An added issue, I can't just split the decimal in Excel and then multiply by 1e+12 because it messes with the values (long story with how they were derived).
Like I said, I'm fine with doing this in either Stata or Excel. Either way this is driving me nuts.
In Excel:
In one column put:
=int(A1)
In the next put:
=--MID(A1,FIND(".",A1)+1,999)
As #Grade'Eh'Bacon stated, I have use a few shortcuts in the above formula. The -- at the beginning change text that are numbers into numbers. It replaces the VALUE() function.
The 999 is a superfluous number in that it is assumed the length of the string being split is not longer than 999 characters. It can be replaced with the LEN() function which would return the actual length of the string.
So putting the two together:
=VALUE(MID(A1,FIND(".",A1)+1,LEN(A1))
Where A1 is the location of the number
Your story is truly shocking.
I'd advise extreme caution in any software. For a start, numbers with decimal parts will be rendered differently depending on whether they are imported as 4-byte or 8-byte reals, in Stata terms as floats or doubles. The underlying problem is that many decimal numbers have no exact binary representation.
In Stata terms, encode is indeed out of the question for a numeric variable (and your example would also fail for other reasons). But ideally you should import the identifiers as strings in the first place. Otherwise you should try a conversion such as generate stringID = string(numid, "%16.13f").
. di %21s string(10.0000000960554, "%16.13f")
10.0000000960554
. di %21s string(10.00000009605539, "%16.13f")
10.0000000960554
. di %21s string(10.00000009605544, "%16.13f")
10.0000000960554
. di %21s string(10.00000009605535, "%16.13f")
10.0000000960554

How to convert 14 bit Hex to Decimal

I need to be able to convert 047C1BEA3A2480 into Decimal. This should convert to 1262359242482816. I have a large amount of hex numbers that need converting so would need a formula or VB script.
I have tried some things including a VB Module, however with this I need to prefix the number with 0X but then gives me a decimal number that is out by 4.
Any ideas would be great.
Use the inbuilt CDec function
Debug.Print CDec("&H" & "047C1BEA3A2480")
This will give you 1262359242482816
Screenshot
Split into 2 7-digits and use the HEX2DEC function. Unfortunately, Excel cannot handle that big a number, so it is rounding when you put it back in Excel. For exmaple, try to paste the decimal version into Excel. But if you want the formula anyway.
=HEX2DEC(LEFT(A4,7))*16^7+HEX2DEC(RIGHT(A4,7))
Otherwise, use Siddarth's solution and put it in Excel as Text.

convert negative decimal number into HEX

I must admit I don't remember much about HEX and so on from school (25 years ago). In any case, I have some values in decimal format which I need to convert into HEX. I am using Excel but I could write a function in VBA if necessary (or do it by code in VB.NET).
I already know how the HEX-result should look like (another source) but I need to use Excel to get this result exactly. The source of decimal input and also the result of the (right) HEX result is from a Linux-system if that is important to know.
Positive numbers seem to be converted correctly while negative numbers give me an headache in the sense that Excel adds in the beinning of the HEX two additional letters (two FF) compared to result I want.
Example:
Decimal input: -524288
Correct HEX-output I must obtain: FFF80000
Using formula in Excel I get: FFFFF80000
(I get 2 FF extra in the beginning of the HEX-output)
Another example:
Decimal Input: -29446758
should be FE3EAD9A
but in Excel I get FFFE3EAD9A
It seems like I always get 2 extra FF in the HEX-output.
Can someone explain (in an easy way) why I get the 2 extra FF and if I can safely remove them?
In Excel, =DEC2HEX by default returns 10 characters.
If you want to get just 8, as your question suggest use:
=DEC2HEX(A1,8)
Nevertheless, unless you have a compatibility issue, you may left the default numbers. Remember that the "F" char acts for negative numbers as a padding char (the same way "0" is for positive numbers).
Edit
The above fails for negatives, as you stated in your comment.
The following works:
=RIGHT(DEC2HEX(A1),8)
I'm not quite sure what you are doing because you haven't included your formula. My guess is that you are using a function like this:
=DEC2HEX(A1)
Although it has an optional parameters to control how many digits are returned, that doesn't work when the input is negative.
Instead you should use some VBA:
Public Function DecToHex(val As Variant) As Variant
DecToHex = Hex(val)
End Function

Resources