# Round missing (mswin32)

**URL:** <https://www.ruby-forum.com/t/round-missing-mswin32/120019>\
**Category:** Development\
**Created:** [November 13, 2007, 2:52am UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019 "2007-11-13T02:52:21Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 2:52am UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/1 "2007-11-13T02:52:21Z")

</div>

e$BLZB\<$G$9!#e(B

e$BKhEY%S%k%I$,$G$-$J$$$H$$$&Ej9F$P$+$j$G?=$7Lu$J$$$G$9$,e(B

```
     cl -nologo main.obj dmydln.obj prelude.obj array.obj

```

(e$BN,e(B)

numeric.obj : error LNK2019: e$BL$2r7h$N30It%7%s%%ke(B \_round  
e$B$,4X?te(B  
\_flo\_divmod e$B$G;2\>H$5$l$^$7$?!#e(B  
miniruby.exe : fatal error LNK1120: e$B30It;2\>He(B 1  
e$B$,L$2r7h$G$9!#e(B  
NMAKE : fatal error U1077: ‘cl’ : e$B%j%?!\<%se(B e$B%3!\<%Ie(B ‘0x2’  
Stop.

round e$B$Oe(B C99e$B$GDI2C$5$l$?4X?t$\_$?$$$G$9$M!#e(B  
e$B$G!"e(BVC71 e$B$K$O$J$$$H!#e(B  
#_round e$B$H$$$&7A$G$b;}$C$F$$$J$$$_$?$$$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 10:05am UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/2 "2007-11-13T10:05:03Z")

</div>

e$B$_$_$C$H!#e(B

KIMURA Koichi wrote:

> round e$B$Oe(B C99e$B$GDI2C$5$l$?4X?t$\_$?$$$G$9$M!#e(B  
> e$B$G!"e(BVC71 e$B$K$O$J$$$H!#e(B  
> #_round e$B$H$$$&7A$G$b;}$C$F$$$J$$$_$?$$$G$9!#e(B

e$B2DG=@-$H$7$F$O$3$l$/$i$$e(B?

- rounde$B;H$o$J$$!#e(B
- missing/round.ce$B$r:n$k!#e(Bconfiguree$B$GB8:\_@-$r3NG’$9$k!#e(B
- Float#rounde$B$O$"$k$s$@$+$i$=$l$r;H$&e(B

# Index: numeric.c

— numeric.c (revision 13902)  
+++ numeric.c (working copy)  
@@ -715,8 +715,7 @@  
}  
flodivmod(RFLOAT(x)-\>value, fy, &div, &mod);  
if (FIXABLE(div)) {

- 

```
  val = round(div);

```

- 

```
  a = LONG2FIX(val);

```

- 

```
  a = rb_funcall(rb_float_new(div), rb_intern("round"), 0);

```

}  
else {  
a = rb\_dbl2big(div);

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 2:27pm UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/3 "2007-11-13T14:27:40Z")

</div>

e$BLZB\<$G$9!#e(B

On Nov 13, 2007 6:04 PM, Urabe S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> - missing/round.ce$B$r:n$k!#e(Bconfiguree$B$GB8:\_@-$r3NG’$9$k!#e(B
> - Float#rounde$B$O$"$k$s$@$+$i$=$l$r;H$&e(B

rev 13907 e$B$G!"e(Bifdefe$B$r@Z$C$Fe(Brounde$B$,$J$$\>l9g$K$Oe(B

val = (div \< 0) ? ceil(x - 0.5) : floor(x + 0.5);

e$B$N$h$&$K$9$k=$@5$,F~$C$F$$$^$9$,$I$s$J$b$s$G$7$g$&$+!#e(B  
Google code search e$B$G$\_$D$1$?e(B round  
e$B$N\<BAu$@$H!“%$%s%i%$%s%”%;%s%V%i$be(B  
e$B;H$C$F$^$7$?!#e(B

e$B$"$He(B round e$B$N@53N$J;EMM$rCN$i$J$$$N$G$9$,!“4]$aJ}\<0$Ke(B  
banker’s rounding e$B$r;H$C$F$$$k$H$9$k$H\>e$N%3!\<%I$H0c$$$,$G$k\>l9g$,e(B  
e$B$”$j$&$k$h$&$J5$$,$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 2:56pm UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/4 "2007-11-13T14:56:22Z")

</div>

e$BLZB\<$G$9!#e(B

On Nov 13, 2007 10:51 PM, Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B@bL@e(B  
> e$B$3$l$i$N4X?t$Oe(B x e$B$r:G$b6a$$@0?tCM$K4]$a$k!#e(B 2 e$B$D$N@0?t$Ne(B  
> e$BCf4VCM$N\>l9g$O!"e(B rint() e$B$N$h$&$K:G$b6a$$6v?t$K4]$a$?$j$;e(B  
> e$B$:$K!"e(B (e$B8=:\_$N4]$aJ}8~$K4X78$J$/e(B) 0 e$B$+$i1s$$J}$K4]$a$k!#e(B

e$B$“!”:G6aCM4]$a$J$N$G$9$M!#e(B  
e$BG\<F@$7$^$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 2:51pm UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/5 "2007-11-13T14:51:40Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 13 Nov 2007 22:27:03 +0900,  
e$B$-$`$i$3$&$$$Ae(B wrote in [ruby-dev:32262]:

> e$B$"$He(B round e$B$N@53N$J;EMM$rCN$i$J$$$N$G$9$,!“4]$aJ}\<0$Ke(B  
> banker’s rounding e$B$r;H$C$F$$$k$H$9$k$H\>e$N%3!\<%I$H0c$$$,$G$k\>l9g$,e(B  
> e$B$”$j$&$k$h$&$J5$$,$7$^$9!#e(B

round()e$B$Oe(BC99e$B$GDj5A$5$l$F$$$^$9!#e(B

$ man round  
e$BL\>A0e(B  
round, roundf, roundl - e$B:G$b6a$$@0?tCM$K4]$a$ke(B (2  
e$B$D$N@0e(B  
e$B?t$NCf4VCM$N\>l9g$Oe(B 0 e$B$+$i1s$$J}$K4]$a$ke(B)

e$B=q\<0e(B  
#include \<math.h\>

```
   double round(double x);
   float roundf(float x);
   long double roundl(long double x);

   -std=c99 e$B$G%3%s%Q%$%k$7!"e(B-lm e$B$G%j%s%/$9$k!#e(B

```

e$B@bL@e(B  
e$B$3$l$i$N4X?t$Oe(B x e$B$r:G$b6a$$@0?tCM$K4]$a$k!#e(B 2  
e$B$D$N@0?t$Ne(B  
e$BCf4VCM$N\>l9g$O!"e(B rint()  
e$B$N$h$&$K:G$b6a$$6v?t$K4]$a$?$j$;e(B  
e$B$:$K!"e(B (e$B8=:\_$N4]$aJ}8~$K4X78$J$/e(B) 0  
e$B$+$i1s$$J}$K4]$a$k!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 13, 2007, 4:12pm UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/6 "2007-11-13T16:12:40Z")

</div>

e$BKNIt$G$9!#e(B

e$B$-$`$i$3$&$$$Ae(B wrote:

> e$B$N$h$&$K$9$k=$@5$,F~$C$F$$$^$9$,$I$s$J$b$s$G$7$g$&$+!#e(B

e$B$($(!#Ej9F$7$?8e$Ke(Bsvn  
upe$B$7$?$i4{$KF~$C$F$$$F$A$g$C$H9x:U$1$Ke(B…

e$BOCBje(B(1):  
e$BLdBj$N2U=j$Oe(BFloat#divmode$B$NCf$Ne(Bdivisore$BItJ,$J$N$G!"$=$b$=$be(Bdive$B$O@0?t$K$9$Ge(B  
e$B$K$J$C$F$k$+Hs\>o$K6a$$CM$N$O$:$J$N$G$9!#$7$?$,$C$F6v?t4]$a$,$I$&$H$+$GG:e(B  
e$B$`$3$H$O$J$$$O$:$G$9!#$b$C$H$b6a$$@0?tCM$K4]$^$C$F$/$l$l$Pe(BOKe$B$G$9!#e(B

e$BOCBje(B(2):  
e$B$H$3$m$Ge(BFloat#rounde$B$N\<BAu$H$$$&$N$b\<B$N$H$3$m@5$J$i\>2$GIi$J$iE70f$H$$e(B  
e$B$&!“\>e$H$[$H$s$IF1$8\<BAu$K$J$C$F$k$o$1$G!”$^$H$a$Fe(Bround()  
e$B$KCV$-49$($k$He(B  
e$B$$$&$N$b$“$j$@$H$O;W$$$^$9!#%7%9%F%`$,Ds6!$9$ke(Bround()e$B$,$”$l$P!"$?$H$($Pe(B  
doublee$B$h$j$b9b@:EY$J1i;;$H$+$r$7$F$/$l$k$+$b$7$l$^$;$s!#E57?E\*$K$Oe(Bx86e$B$Ge(B  
80bite$B1i;;$7$F$/$l$k$H$+!#e(B

# c.f. [2007-06-23](http://d.hatena.ne.jp/hnw/20070623)

> Google code search e$B$G$\_$D$1$?e(B round e$B$N\<BAu$@$H!“%$%s%i%$%s%”%;%s%V%i$be(B  
> e$B;H$C$F$^$7$?!#e(B

e$B$C$F$$$&$N$O$=$&$$$&$H$3$m$r0U?^$7$F$k$H$+$8$c$J$$$G$9$+$M!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 14, 2007, 2:03am UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/7 "2007-11-14T02:03:51Z")

</div>

From: Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Date: Tue, 13 Nov 2007 22:51:25 +0900  
Message-Id: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> At Tue, 13 Nov 2007 22:27:03 +0900,  
> e$B$-$`$i$3$&$$$Ae(B wrote in [ruby-dev:32262]:
> 
> > e$B$"$He(B round e$B$N@53N$J;EMM$rCN$i$J$$$N$G$9$,!“4]$aJ}\<0$Ke(B  
> > banker’s rounding e$B$r;H$C$F$$$k$H$9$k$H\>e$N%3!\<%I$H0c$$$,$G$k\>l9g$,e(B  
> > e$B$”$j$&$k$h$&$J5$$,$7$^$9!#e(B
> 
> round()e$B$Oe(BC99e$B$GDj5A$5$l$F$$$^$9!#e(B

Ce$B8@8l$NOC$J$N$+$I$&$+$o$+$j$^$;$s$,!“0J2\<$N$h$&$JOC$,$”$j$^$9!#e(B

e$BC\<?t=hM}e(B - Wikipedia:

> **[端数処理](https://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86#.E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.B8.B8.E3.82.81.E9.96.A2.E6.95.B0)**
>
> 端数処理（はすうしょり）とは、与えられた数値を一定の丸め幅の整数倍の数値に置き換えることである。平たく、丸め（まるめ）ともいう。
> 常用的には、十進法で10の累乗（…100、10、1、0.1、0.01…）が丸め幅とされることが多いが、そうでない丸め幅をもつ処理は存在する。十進法以外のN進法について同様の概念を考えることもできる。
> 丸めは任意の丸め幅に対し可能だが、以下では特に断らない限り、丸め幅を1とする。任意の丸め幅で丸めるには、丸める前に丸め幅で割り、丸めた後に丸め幅をかける。
> 主に正数について述べるが、負数についても適宜述べる。

> e$BB?$/$N4D6-$Ke(Brounde$B$H$$$&4X?t$,$"$k$,!"4D6-$K$h$C$FF0:n$,0[$J$k$N$G!“e(B  
> e$B;HMQ$K$OCm0U$,I,MW$G$”$k!#e(B

- #ifndef HAVE\_ROUND

- #if !defined(HAVE\_ROUND) || !(defined( **STDC\_VERSION** ) &&  
**STDC\_VERSION** \>= 199900L)

e$BEy$H$9$k$N$O!"\>iD9$G$7$g$&$+!#e(B

---

<div class="post-metadata">

**Author:** ![KIMURA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/ce7236/32.png) [@KIMURA\_Koichi](https://www.ruby-forum.com/u/KIMURA_Koichi)\
**Post date:** [November 14, 2007, 4:07am UTC](https://www.ruby-forum.com/t/round-missing-mswin32/120019/8 "2007-11-14T04:07:49Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 14 Nov 2007 10:03:01 +0900,  
pegacorn wrote in [ruby-dev:32284]:

> Ce$B8@8l$NOC$J$N$+$I$&$+$o$+$j$^$;$s$,!“0J2\<$N$h$&$JOC$,$”$j$^$9!#e(B
> 
> e$BC\<?t=hM}e(B - Wikipedia:  
> [端数処理 - Wikipedia](http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86#.E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.B8.B8.E3.82.81.E9.96.A2.E6.95.B0)
> 
> > e$BB?$/$N4D6-$Ke(Brounde$B$H$$$&4X?t$,$"$k$,!"4D6-$K$h$C$FF0:n$,0[$J$k$N$G!“e(B  
> > e$B;HMQ$K$OCm0U$,I,MW$G$”$k!#e(B

modf()e$B$N$[$&$,$$$$$G$9$+$M$'!#e(B

# Index: numeric.c

— numeric.c (revision 13918)  
+++ numeric.c (working copy)  
@@ -70,11 +70,10 @@ round(double x)  
double f;

- if (x \> 0.0) {
- f = floor(x);
- x = f + (x - f \>= 0.5);
- }
- else if (x \< 0.0) {
- f = ceil(x);
- x = f - (f - x \>= 0.5);

- f = modf(x, &x);
- if (f \>= 0.5) {
- x += 1.0;
- }
- else if (f \<= -0.5) {
- x -= 1.0;  
}  
return x;
