pi.round
good way
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
<script></script>
<script></script>
<script></script>
bad way as follows: def f(i,n,flag) y = 1 n.times do |x| y = y*10 end if flag==1 (i*y).round/(y*1.0) else (i*y).floor/(y*1.0) end end
good way
2007
-
06
-
11
Ruby中的数字【一】
数字的表达形式
==========================================
可以分无符号和有符号两种:
237 # 无符号(正数)
+237 # 和上面的相同
-237 # 负数
如果一个数字很长,你可以在数字的中间任何地方(不能在两头)加入下划线来标记,使其更容易辨别:
1048576 # 一个简单的数字
1_048_576 # 其值和上面的相同
10_48_57_6 # 还是和上面的相同
也可以以8,10,16进制表示数字:
0b10010110 # 2进制,以0b开头
01234 # 8进制,以0开头
0xdeadbeef # 16进制,以0x开头
浮点数的表现形式:
3.14
-0.628
6.02e23 # 6.02乘以10的23次幂
6.626068e-34
Float这个类定义了数字的上下限,不过他们的值是看具体的机器的,在不同的机器上面可能会不一样:
Float::MIN # 2.2250738585072e-308 (在我的机器上)
Float::MAX # 1.79769313486232e+308
Float::EPSILON # 2.22044604925031e-16
数字的一些基本操作符
===============================================
+,-,*,/是最基本的操作符,Ruby中,大部分这些操作符其实是方法,因此,我们可以覆盖它。
做幂预算的符号是**,在老的一些编程语言中会有看到,比如BASIC和FORTRAN。
a = 64**2 # 4096
b = 64**0.5 # 8.0
c = 64**0 # 1
d = 64**-1 # 0.015625
两个整数相除,得到的结果是一个整数(即相除结果的整数部分),如果你想得到的结果是一个浮点数,请保证做除法的两个数中,至少有一个是浮点数:
3 / 3 # 3
5 / 3 # 1
3 / 4 # 0
3.0 / 4 # 0.75
3 / 4.0 # 0.75
3.0 / 4.0 # 0.75
下面的方式可以保证在使用变量做除法运算的时候,得到的结果是浮点数:
z = x.to_f / y
z = Float(x) / y
数字的四舍五入
==================================================
使用round方法:
pi = 3.14159
new_pi = pi.round # 3
temp = -47.6
temp2 = temp.round # -48
有时候,我们不是需要一个四舍五入后的整数,而是取小数后某位上的四舍五入,那么,我们可以使用sprintf方法:
pi = 3.1415926535
pi6 = eval(sprintf("%8.6f",pi)) # 3.141593
pi5 = eval(sprintf("%8.5f",pi)) # 3.14159
pi4 = eval(sprintf("%8.4f",pi)) # 3.1416
不过上面的看起来太难看了,这样,我们在Float类中封装一个方法:
class Float
def roundf(places)
temp = self.to_s.length
sprintf("%#{temp}.#{places}f",self).to_f
end
end
这样,我们就可以如此使用:
pi = 3.1415926535
res = pi.roundf(4) # 3.1416
浮点数的格式化
========================================================
有三种方式可以用来格式化浮点数:
1.使用printf方法:
x = 345.6789
i = 123
printf("x = %6.2f\n", x) # x = 345.68
printf("x = %9.2e\n", x) # x = 3.457e+02
printf("i = %5d\n", i) # i = 123
printf("i = %05d\n", i) # i = 00123
printf("i = %-5d\n", i) # i = 123
2.使用sprintf
str = sprintf("%5.1f",x) # "345.7"
3.使用%
str = "%5.1f" % x # "345.7"
str = "%6.2f, %05d" % [x,i] # "345.68, 00123"
==========================================
可以分无符号和有符号两种:
237 # 无符号(正数)
+237 # 和上面的相同
-237 # 负数
如果一个数字很长,你可以在数字的中间任何地方(不能在两头)加入下划线来标记,使其更容易辨别:
1048576 # 一个简单的数字
1_048_576 # 其值和上面的相同
10_48_57_6 # 还是和上面的相同
也可以以8,10,16进制表示数字:
0b10010110 # 2进制,以0b开头
01234 # 8进制,以0开头
0xdeadbeef # 16进制,以0x开头
浮点数的表现形式:
3.14
-0.628
6.02e23 # 6.02乘以10的23次幂
6.626068e-34
Float这个类定义了数字的上下限,不过他们的值是看具体的机器的,在不同的机器上面可能会不一样:
Float::MIN # 2.2250738585072e-308 (在我的机器上)
Float::MAX # 1.79769313486232e+308
Float::EPSILON # 2.22044604925031e-16
数字的一些基本操作符
===============================================
+,-,*,/是最基本的操作符,Ruby中,大部分这些操作符其实是方法,因此,我们可以覆盖它。
做幂预算的符号是**,在老的一些编程语言中会有看到,比如BASIC和FORTRAN。
a = 64**2 # 4096
b = 64**0.5 # 8.0
c = 64**0 # 1
d = 64**-1 # 0.015625
两个整数相除,得到的结果是一个整数(即相除结果的整数部分),如果你想得到的结果是一个浮点数,请保证做除法的两个数中,至少有一个是浮点数:
3 / 3 # 3
5 / 3 # 1
3 / 4 # 0
3.0 / 4 # 0.75
3 / 4.0 # 0.75
3.0 / 4.0 # 0.75
下面的方式可以保证在使用变量做除法运算的时候,得到的结果是浮点数:
z = x.to_f / y
z = Float(x) / y
数字的四舍五入
==================================================
使用round方法:
pi = 3.14159
new_pi = pi.round # 3
temp = -47.6
temp2 = temp.round # -48
有时候,我们不是需要一个四舍五入后的整数,而是取小数后某位上的四舍五入,那么,我们可以使用sprintf方法:
pi = 3.1415926535
pi6 = eval(sprintf("%8.6f",pi)) # 3.141593
pi5 = eval(sprintf("%8.5f",pi)) # 3.14159
pi4 = eval(sprintf("%8.4f",pi)) # 3.1416
不过上面的看起来太难看了,这样,我们在Float类中封装一个方法:
class Float
def roundf(places)
temp = self.to_s.length
sprintf("%#{temp}.#{places}f",self).to_f
end
end
这样,我们就可以如此使用:
pi = 3.1415926535
res = pi.roundf(4) # 3.1416
浮点数的格式化
========================================================
有三种方式可以用来格式化浮点数:
1.使用printf方法:
x = 345.6789
i = 123
printf("x = %6.2f\n", x) # x = 345.68
printf("x = %9.2e\n", x) # x = 3.457e+02
printf("i = %5d\n", i) # i = 123
printf("i = %05d\n", i) # i = 00123
printf("i = %-5d\n", i) # i = 123
2.使用sprintf
str = sprintf("%5.1f",x) # "345.7"
3.使用%
str = "%5.1f" % x # "345.7"
str = "%6.2f, %05d" % [x,i] # "345.68, 00123"
<script></script><script></script><script></script><script></script><script></script><script></script>
- 15:25
- 浏览 (1384)
- 评论 (1)
- 分类: Ruby & Rails
- 相关推荐
发表评论
表情图标
![](https://i-blog.csdnimg.cn/blog_migrate/fdae2ee6389663d0e8e8cedf36783999.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4762a8ec9eb60433747467059e99f95e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/70e6f45409acf447b2fa7efdb0a3e40d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0bb8607afda370c63b5554b6e8885ffd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/395f56c5980fbb3e31f1ec85cb557b9e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4dcbb665af73b7d0cf235c3bf4436f90.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/e62600a0b5762b94396c35c27b2adda8.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/d452feb9f9bd26ce6184b2f5623f1534.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/af6d31ea11d11d9ab3266033918d6c46.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0fdad3ca8964cd28ec8625ec3ccd4cfb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0148983d7112d60e2c6749bfa31e8e6.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a038f8d127ac958f0fc9162c1828d461.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/48463b748ef69aacec3dc9cc457c7d87.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/bdd2d55736d2015fe49de71c9e3202fe.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4549eaaee5401b5a90f205c2b76a7e1f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/27adcb58c659b2eb3007508809b3ce32.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8c29aae2babf927bb7b1b173be274d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3c1dd00b897b54388a49dea885d8a014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/e764c68af0f4115017332777a9af276c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6fbac1a3fbe39ee7868ad025050f1598.gif)
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签
您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)
<script></script>我的留言簿 >>更多留言
bad way as follows: def f(i,n,flag) y = 1 n.times do |x| y = y*10 end if flag==1 (i*y).round/(y*1.0) else (i*y).floor/(y*1.0) end end
评论排行榜