# how to convert float like 0.333333 to string "1/3"

0 favourites
• 14 posts
• Hello,I have a problem in process math calculate:

How to convert a float like 0.33333333 to percent string "1/3"?

like:

0.333333333333 -> "1/3"

0.666666666666 -> "2/3"

and how to determine transfer Infinity number (ie. result of 1/0) to a special string like "NA"?

thanks.

• Have a look here: dec2fract.html

• Decide how forgiving you want to be, then create some fun if statements!

If x <.334 and x > .332 string = "1/3"

if x = .25 string ="1/4"

if x < .1668 and x > .1666 string = "1/6"

do this for every possible fraction you care about.

would be smartest to create a function to contain these checks as well.

FUNction

function string decimalToFraction(x){

if if if ...

return string;

}

• thanks. but the float is result of some calculating, ie. 2.333333 is result of 8/3.

so that float number is indefinite. how can i transfer it to a frac string

2.333333 -> 8/3?

it cannot be solved by "if else" condition.

blackhornet supply a good idea, is there a simple method or function? thanks more.

• I am almost certain that there is no simple function. The simple method is as I described. Decide upon a precision threshold, and check the digits to the right of the decimal place. There is a method to truncate into an integer, so you can make two strings and concatenate them. so your 8/3 as 2.333333 becomes 2 and 1/3.

• The reason is that .3333333333333333333 is not 1/3. It is an approximation of 1/3, and to go between the two needs some human judgement, e.g. IF statements.

• i mean that float is accurate of 1/3. the problem is how to transfer a repeating decimals (0.33333333) to fraction express (1/3) in order to show ?

• Computers don't use that notation as they usually deal in decimals. Fractions are just our way of simplifying how we read it. So I doubt there is a "simple" way, but someone may have written a javascript library to handle that type of thing for some type of math learning app. So you may be ale to find one and write a plugin for it. But C2 most likely doesn't have a built in easy way as that isn't really a common gaming requirement.

• thanks a lot. i'll try some method.

• ## Try Construct 3

Develop games in your browser. Powerful, performant & highly capable.

Construct 3 users don't see these ads
• This javascript example will get you on your way if you want to make a plugin to do it.

• interesting problem

decimalToFraction.capx

• Above example is just what i want.but it has some restricts:

it can process 1 recursive digit such as .3333..., but cannot process 2 or more recursive digit (maybe 6 is enough). for example: 0.142857142857...->1/7 ,0.076923076923...->1/13, which has 6 recursive digit. It also need skip leading digit that may not be recursive, e.g. 0.4777?->43/90 ,that leading 4 is not recursive.

Maybe more work needed ,it's not a simple task anyway .

Yann's "DecimalToFraction" is really very useful for me . maybe it could be put plugin to enhance maths function.

Thanks a lot.

• Interesting problem indeed.

Here's another algorithm that works well but is a bit slower:

It finds 1/7 and 1/13 quite well.

http://dl.dropbox.com/u/5426011/examples17/dec2frac.capx

It's based on the forth answer here:

http://stackoverflow.com/questions/5124743/algorithm-for-simplifying-decimal-to-fractions

• It's a perfect algorithm! the above function solves my problem perfect!

thanks a lot.

• 14 posts