[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 14:42 / Filesize : 176 KB / Number-of Response : 723
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 34



1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

459 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:34:23 ]
ちょっと使ってみたんだけど、この言語(というか処理系?)、は多項式時間や指数関時間な計算をブチ転がそうとすると圧倒的に遅いわね…
なによ…まったく!

460 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:45:56 ]
そこらへんのしっかりしたドキュメントが無いから
どうしても試行錯誤で感覚的にならざるを得ない

461 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:33:34 ]
>>460
カッコで括ったら式になるってちゃんと書いてあるだろ

462 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:35:08 ]
そんなところで試行錯誤した覚えはないなあ

463 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:42:42 ]
p(2*10) #=> 20
p (2*10) #=> 20

p(2*10)*2
NoMethodError: undefined method `*' for nil:NilClass
p (2*10)*2 #=> 40

464 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:45:38 ]
> メソッドの引数のカッコはメソッド名と分かれてはいけない
これが書いてないだろ?

465 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:49:36 ]
>>459
O(nlogn)の近似アルゴリズムに変えるか、Inline C 使うか、
そもそも C で書け。

466 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:42:27 ]
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    多項式時間や指数関時間な計算が遅いのは当たり前だろ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

467 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 19:53:39 ]
多項式時間や指数関時間の計算をRubyでやる男の人って・・・



468 名前:デフォルトの名無しさん [2010/02/13(土) 20:57:16 ]
マルチバイトの文字列のうち、ASCIIの制御文字にあたるもの(NULLとかCRとか)
を削除するには
sub /\s+/, ''
でいいですか?

0x00〜0x1fだけを削除するにはどうしたらよいですか?

469 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:32 ]
irb> p "ね\001こ\t大\025す\177き\n".gsub(/[[:cntrl:]]/){''} == "ねこ大すき"
true
irb> p "ね\001こ\t大\025す\177き\n".gsub(/(?![[:space:]])[[:cntrl:]]/){''} == "ね こ\t大すき\n"
true


470 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:33 ]
普通に
/[\x00-\x1f]/
じゃダメなの?

471 名前:デフォルトの名無しさん [2010/02/13(土) 21:21:50 ]
飼ってたインコを食べたので猫はきらいです

472 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:29:55 ]
>>469
名前つきでわかりやすそうに見えて実はわかりにくいというなんとも

473 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:30:57 ]
キャリッジリターンやラインフィードは立派なコントロールコードですよ

474 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:35:40 ]
>>470
いいんじゃまいか

475 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:42:39 ]
> 0x00〜0x1fだけを削除するにはどうしたらよいですか?
こういうの見るたび、DELは消さなくていいんだろうか、といつも思う

476 名前:デフォルトの名無しさん [2010/02/13(土) 21:55:53 ]
ISO-2022-JP文字列に対して実行してESC(0x1B)を消されてしまえー。


477 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:07:14 ]
>>467
Ruby を愛しています
ゆるしてください



478 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:25:51 ]
童貞のくせに愛なんて言葉を軽々しく使うな

479 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:46:25 ]
rubyはJavaの1000倍の生産性があると聞いてやってきました

480 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:54:29 ]
エロ画像を一括でスクリプトとか書くならそれぐらいあるかもしれない

481 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:05:47 ]
RubyでJSON(と言うかJavaScriptのオブジェクトの記述)をパースしたいのですが
require "yaml"
p YAML.load('{"num":"123456789"}')
とかやるとエラーになってパースできません。何か良い方法があったら教えてください
p YAML.load('{"num": "123456789"}')
ならパースできるようですが、JavaScript的にはどっちでも通るはず・・・

482 名前:デフォルトの名無しさん [2010/02/13(土) 23:39:39 ]
# 正しいところを見ているのかちょっと自信がないけど。

yaml.org/spec/1.1/index.html#id933010

Explicit Values
An explicit value is denoted by the “:” indicator, followed by separation spaces.

仕様かも?



483 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:41:07 ]
面倒でなければ、gem install jsonで
JSON.parse(json_str)
するのが簡単で確実。

484 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:04:15 ]
ちょっとあなた
RubyInlineでインスタンス変数を参照する方法がわかりませんわよ

485 名前:デフォルトの名無しさん [2010/02/14(日) 10:32:41 ]
jp.rubyist.net/magazine/?0009-YAML にもコロンの後にはスペースとしつこく書いてあるな。
YAMLのフロースタイルがJSONとして評価できたとしても、逆ではないってことかな。


486 名前:デフォルトの名無しさん [2010/02/14(日) 10:34:53 ]
>>484
使ったことないけど、Cの世界にいるときは rb_obj_ivar_get じゃねーの?

487 名前:デフォルトの名無しさん [2010/02/14(日) 10:38:14 ]
ja.wikipedia.org/wiki/JavaScript_Object_Notation

他のデータ記述法との関係
但し、厳密にはJSONはYAMLのサブセットではない[3]。具体的には配列とハッシュの区切りを
それぞれ, のようにカンマ+スペースの形にしたときにのみYAMLのサブセットとなる。したがっ
て、YAML.loadといったYAMLのルーチンを流用してJSONデータを読み込む場合は、あらかじ
め区切りの文字をYAMLと互換性を保つようにしておく必要がある。




488 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:42:36 ]
さすがにJSONをYAMLのライブラリで読むのは横着だろうw

489 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:02:11 ]
何でそんなしょぼいところで非互換性持たせてるんだ

490 名前:デフォルトの名無しさん [2010/02/14(日) 13:11:56 ]
たまたま似てるだけであって互換性を意図的に持たせようとしたわけではないから。


491 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:20:42 ]
たまたまと言い張るには似すぎだろ

492 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:25:56 ]
>>489
サブセットにしようと思って作ったんだけど手作業での網羅が漏れてたらしくて

493 名前:デフォルトの名無しさん [2010/02/14(日) 13:42:37 ]
何に怒りをぶつけているんだろう。


494 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:12:08 ]
お客様がいらしてるご様子

495 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:20:09 ]
>>494
こんなので「怒ってる」とかありえんよな
素直にMLにだけ引き篭もってろと

496 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:41:12 ]
ruby1.9.1(mswin32)で動くプロファイラありませんか?
標準のは遅すぎて使い物になりません

497 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:49:59 ]
自分で作れるよ



498 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:25:54 ]
どうやって作るのですか?

499 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:43:08 ]
掲示板で説明できるようなものじゃないけど、
profile や profiler を見れば既存の作り方は書いてあるよ。
あとは処理速度を向上させる工夫をするなり、
自分で一から作るなりすればいいよ。

500 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:49:37 ]
それは標準のものでは?
自分で書いたからといって速くなるとは思えませんが如何でしょうか?

501 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:55:21 ]
ちょっとお茶しませんか?

502 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:58:01 ]
>>500
そんなの自分次第やん

503 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:01:48 ]
Rubyの使用メモリ量を測る方法って何かありますか?
終了までの最大量だけでもわかるといいんですが

504 名前:デフォルトの名無しさん [2010/02/14(日) 17:09:23 ]
Linuxだと "/proc/#{$$}/status" とかを読んだらいろいろ分かるかもしれない。
ほかは知らん。


505 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:15 ]
>>503
Rubyとしては提供されてない
OSから観測してもらうしかない

506 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:38 ]
UNIX なら top
Windows ならタスクマネージャ


507 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:12:04 ]
valgrind使えばいけるかも



508 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:13:53 ]
まあ、/proc 使っていいなら stat のポーリングで
top コマンドみたいにやればいいんだけどさ。

libproc.so って /proc の出力を露骨に sscanf() してるから
あんまり汎用性ないよなーと思って。

509 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:14:45 ]
汚いコピペだなあ

510 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:21:46 ]
>>504
お前帰れって言われてんだよ

511 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:01 ]
>>504-508
ありがとうございます
Windowsで見たいのですがcygwinなら/proc/pid/statusは同様に使えそうな感じなんで
詳しく調べてみます

512 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:36 ]
>>502
自分次第とおっしゃいますと具体的にはどのような工夫がありますでしょうか?

513 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:33:21 ]
ruby-profは?コンパイルはがんばれ

514 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:43:59 ]
いや、早い話、インストールするだけで動くものはありませんかってことです。
ruby-profはドキュメントでは1.9対応を謳っていましたがWindows用のものは
msvcrt-ruby18.dllが見つからないと表示され、1.8用のDLLを参照しようと
してしまい動きませんでした。

515 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:05:12 ]
Rubyコミュニティで自分で作れと言われたらそれは
ありませんごめんなさいという意味です。
素直にあきらめましょう。

516 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:21:32 ]
それを先に言ってください

517 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:32:48 ]
無いなら自分で作ればいいってだけの話だな。




518 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:53:46 ]
初心者にそれを求めるのは酷

519 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:59:13 ]
というか普通に動くが

520 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:02:58 ]
何を使っているんですか?

521 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:16:29 ]
やり方わからなくて詰まるくらいなら経験たまるまで素直に1.8だけ使えやオラ、とか思わなくもない

522 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:38:21 ]
コンパイルさえできればいいんだから、コンパイラ入れるかmingw32使ってみるというのはどう

523 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:48:23 ]
妹にチョコもらってしまった…

524 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:59:36 ]
やれるのかやれないのかハッキリしてよ

525 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:04:51 ]
チョコくれたんだから実はOKという意思表示なのでは

526 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:07:05 ]
女だってやりたいんだよ
童貞は知らないだろうけど

527 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:24:22 ]
女がやりたがってるのは好きな男とだぞ
勘違いしちゃダメだぞ



528 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:25:07 ]
やべ
勘違いしてた

529 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:26:22 ]
インターフェースは同じはず
そこはポリモーフィズムで…

530 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:27:51 ]
スレ違いだからもう終わりよ、みなさん。
いろいろと参考になりましたが。

531 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:25:51 ]
童貞きめえ
女に植えてんだなかわいそうにおまえら

532 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:29:19 ]
コンピュータばかりいじりすぎて
外の世界が見えません。

533 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:06:07 ]
gemをインストールしたあと使おうとすると no such file to load になるんだけど
どうすれば使えるようになるの?


534 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:25:35 ]
>>533
そのgemのインストール自体は正常に終わっているとすると、
require 'rubygems'
require 'gemのライブラリ'
で使えるようになるはずだが。(つまり、毎回rubygemsをrequireする必要がある)

たとえば、ちょっとjsonの場合はこんな感じ。
$ sudo gem install json
$ irb
irb> require 'rubygems'
irb> require 'json'
irb> JSON.parse('{"num":"123456789"}')
=> {"num"=>"123456789"}


535 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:26:04 ]
require "rubygems"

536 名前:534 mailto:sage [2010/02/15(月) 00:26:52 ]
書き途中で送信してしまった。
× たとえば、ちょっとjsonの場合はこんな感じ。
○ たとえば、ちょっと前のレスのjsonの場合はこんな感じ。


537 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:28:56 ]
webos-goodies.jp/archives/51106257.html



538 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:57:22 ]
sudoをつけてなかったのが敗因だった。ありがとう

539 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:12:58 ]
--pre とか付けると no such file to load となる
すばらしいマイエンバイロンメント ruby 1.8.2、 gems 0.9

いきなり詰んだorz

540 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:19:53 ]
ysky.vox.com/library/post/gemsのオプション仕様が変わった.html

あした gems 自体を update させてもう一度やってみょ
寝るべzzz

541 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:30:34 ]
いちはちに…

542 名前:デフォルトの名無しさん [2010/02/15(月) 07:52:31 ]
>>539
なんのための--preか知らんが、Rails 3βとかは1.8.7以降でないと動かんぞ。


543 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:05:05 ]
ていうか1.8.2は5年以上前の不安定版なんだが
今更これ使うくらいなら俺はPerlをやる

544 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:13:11 ]
Pythonは?

545 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 09:07:03 ]
JSON is YAML って言っている人はいるけど、本当に上位互換になるのは 1.2 から。
で、Ruby 標準添付の syck は 1.0 なので

546 名前:デフォルトの名無しさん [2010/02/15(月) 10:19:49 ]
_why行方不明だし、どうなるんだろ Syck。


547 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:32:31 ]
どうなるもなにも、これまでの「優秀だったがサポートがなくなったライブラリ」と同様の道を辿る



548 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:49:22 ]
1.8用のtranscodeっぽいものってない?
バイト列とエンコーディングを投げるとバイト列の適切な区切り位置を記憶してくれるライブラリみたいな

549 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:59:07 ]
>>546
Aaron さんが互換ライブラリを開発中

>>548
Iconv じゃダメですか

550 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:04:17 ]
data = Array.new
data = [1, 2, [3, 4, [5]], 6]
多次元配列のデータがあります。
このデータを、次のように1次元配列に格納しなおしたいです。
p data
=> [1, 2, 3, 4, 5, 6]
多次元配列のデータは、今回のサンプルでは3次元ですが、
実際のデータは何次元になるかわかりません。
そのため、再帰の必要性があると思い次のようなメソッドを考えました。

def split_ary(ary)
local_ary = Array.new
return local_ary if ary.empty?
ary.each do |a|
if Array == a.class
split_ary(a)
else
local_ary << a
end
end
end

良く考えれば当然なのですが1次元にできません。。。
p split_ary(data)
=> [1, 2, [3, 4, [5]], 6]

1次元にするには、どのように改善すれば良いでしょうか。

551 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:17:25 ]
[1, 2, [3, 4, [5]], 6].flatten

552 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:21:42 ]
>>551

おおお!! このようなメソッドが既にあるのですね。
ありがとうございます!

553 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:34:29 ]
flatten使うべきだけど、後学のために

def split_ary(ary, local_ary = [])
 ary.each {|a|
  if a.kind_of? Array
   split_ary(a, local_ary)
  else
   local_ary << a
 end
 }
 local_ary
end


554 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:47:28 ]
>>553

丁度、ライブラリ set.rb の flatten メソッドのソースを眺めている所でした。
・Array クラスか判定するのに、kind_of を使うこと
・local_ary を引数(の位置?)で、Array.new すること
勉強になりました。

初めは set.rb を見ても理解できなかったのですが、
私が書いたソースを改変して貰ったおかげで、理解できました。

ありがとうございました。


555 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 13:07:36 ]
すごく重要なことだけど、多次元配列はRuby標準では存在しない
ただの入れ子になった配列
多次元であるかのように振舞うことはない

556 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:28:12 ]
irb(main):006:0> (5.6 * 10500).to_i
=> 58799

58800になってほしかったんですが、なぜこんな風になってしまうんでしょう?


557 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:31:43 ]
www.google.co.jp/search?num=30&hl=ja&q=ruby+%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5&btnG=%E6%A4%9C%E7%B4%A2&lr=



558 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:32:04 ]
>>549
バイト列 unsafe_str から制御文字を取り除きたいんです
んで、世の中にはたとえば iso-2022-jp のような \e を必要としてるエンコーディングもあるので、
そういう場合、「必要な制御文字」だけは残したいんです

display_encoding = "ISO-2022-JP"
unsafe_str = Iconv.iconv(display_encoding, "UTF-8", 'ねこだいすき').join
unsafe_str #=> "\e$B$M\e(B\\000\e$B$3$@$$\e(B\\e\e$B$9$-\e(B" # \000と\eが入ってるのがやだ
safe_str = kill_dangerous_ctrl_chars_on(display_encoding, unsafe_str)
p safe_str #=> "\e$B$M$3$@$$$9$-\e(B"

ちなみに日本語以外にも対応したいですというか日本語だけでいいなら悩みません

559 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:49:33 ]
>>556
5.6を10500回足したものが、本当は58800よりもほんの少しだけ小さいから
irb> (5.6 * 10500) - 58800
-7.27595761418343e-12
より正確には、2進数で表現される5.6が10進数で考える本来の5.6よりもほんの少しだけ小さいから
Float#to_iは「切り捨て」を行うので、「58800よりもほんの少しだけ小さい数」の小数部を切り捨てて、58799になる

これを簡易に防ぐには、>>557の言うように四捨五入のメソッドを整数化処理として擬似的に使う
誤差が0.5を超すことは一般的用途ではまずないから
irb> (5.6 * 10500).round
58800

もし本当に厳密に計算を行いたいのならbigdecimalライブラリを使う
irb> require 'bigdecimal'
irb> (BigDecimal.new("5.6")*BigDecimal.new("10500")).to_s
"0.588E5"







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef