Really small numbers in ruby coming as zero!?

hello I have this piece of code written to analyse the cross section and
give the reinforcement for a concrete beam…

#initializing some constants… pls ignore this part!
M = 340000000
h = 630
b = 300
fck = 40
d = b-30

This is where I am having my problem

K = ((M) / (b*(d**2)*fck)).to_f

I have defined other constants… but didn’t wanna crowd the question

z = (d/2) * (1 + Math.sqrt(1-2*(K/kappa)))

area_steel = (M) / (fyd*z)
puts “Area of Steel Required " + area_steel.to_s + " sq. mm”

end of code

thanks for your help cheers!

Mahadev I. wrote:

This is where I am having my problem

K = ((M) / (b*(d**2)*fck)).to_f

K = M.to_f / (b*(d**2)*fck)

In your code, you’re dividing an integer by an integer, so Ruby makes it
an integer division. If you make either the numerator or denominator a
float, you’ll get a float result.


Alex

Thanks really appreciate it… :slight_smile:

Alex Y. wrote:

Mahadev I. wrote:

This is where I am having my problem

K = ((M) / (b*(d**2)*fck)).to_f

K = M.to_f / (b*(d**2)*fck)

In your code, you’re dividing an integer by an integer, so Ruby makes it
an integer division. If you make either the numerator or denominator a
float, you’ll get a float result.

But don’t use floats for math, because of the imprecision inherent in
the format. For math, stick to integers or BigDecimal.


Alex

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]