The world without the   literal notation for   floating-point numbers                         , Kenta Murata   GeneticLab C...
CRuby Committer   (BigDecimal)   Ruby Sapporo   Kosen Confhttp://www.flickr.com/photos/koichiroo/5244581973/Tuesday, July ...
Tuesday, 12010 3 July 19, 2011   3
RubyKaigi                        n   !!Tuesday, 12010 3 July 19, 2011               4
Ruby    04      Sapporo RubyKaigi 04                         Summer 2012Tuesday, July 19, 2011                  5
I have some question.Tuesday, July 19, 2011                   6
Do you use Float                             values?Tuesday, July 19, 2011                      7
Do you understand                     Float well?Tuesday, July 19, 2011               8
Float is too difficult.Tuesday, July 19, 2011                    9
Reading difficultyTuesday, July 19, 2011                       10
ruby-1.9.2-p290 :001 > 76287755398823936.0   => 76287755398823940.0  ruby-1.9.2-p290 :002 >Tuesday, July 19, 2011         ...
Comparing difficultyTuesday, July 19, 2011            12
ruby-1.9.2-p290 :001 > 12.4 * 1.05 == 13.02   => false  ruby-1.9.2-p290 :002 > 12.4 * 1.05   => 13.020000000000001  ruby-1...
Representation                           differenceTuesday, July 19, 2011                    14
Human:		 Decimal                         Internal:	 BinaryTuesday, July 19, 2011                          15
Concept                         differenceTuesday, July 19, 2011                16
We think                     Float is a number.Tuesday, July 19, 2011                    17
It is real that                         Float is a range.Tuesday, July 19, 2011                       18
They’re troublesomeTuesday, July 19, 2011         19
There is a solutionTuesday, July 19, 2011                   20
Why not use Rational.Tuesday, July 19, 2011       21
It is difficult, too.Tuesday, July 19, 2011                          22
Ruby doesn’t have            any literal notations                for RationalTuesday, July 19, 2011              23
Does a fractional                    notation solve the                        problems?Tuesday, July 19, 2011            ...
No!Tuesday, July 19, 2011         25
We naturally use   decimal point notation.Tuesday, July 19, 2011       26
We need a decimal-      point notation for   representing a Rational.Tuesday, July 19, 2011        27
ruby--p290 :001 > 13.02.class   => Rational  ruby--p290 :001 > 12.4 * 1.05 == 13.02   => true  ruby-1.9.2-p290 :002 > 12.4...
Do you worry about              Rational is slow?Tuesday, July 19, 2011            29
We can optimize for            denominators of 10nTuesday, July 19, 2011            30
Float isn’t as so fast as           you thinkTuesday, July 19, 2011          31
If you need fast Float              calculationTuesday, July 19, 2011           32
Write it in C as                         extension libraryTuesday, July 19, 2011                       33
If you need to calculate      with arrays of FloatTuesday, July 19, 2011        34
Use NArrayTuesday, July 19, 2011                35
Rational may be                         what you wantTuesday, July 19, 2011                     36
This talk’s background,    demonstrations, and   more detail descriptionsTuesday, July 19, 2011        37
Tuesday, July 19, 2011   38
Upcoming SlideShare
Loading in...5
×

The world without the literal notation for floating-point numbers

1,504

Published on

We need the decimal-point literal notation for Rational instead of Float because Float is legacy.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,504
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

The world without the literal notation for floating-point numbers

  1. 1. The world without the literal notation for floating-point numbers , Kenta Murata GeneticLab Co., Ltd.Tuesday, July 19, 2011 1
  2. 2. CRuby Committer (BigDecimal) Ruby Sapporo Kosen Confhttp://www.flickr.com/photos/koichiroo/5244581973/Tuesday, July 19, 2011 2
  3. 3. Tuesday, 12010 3 July 19, 2011 3
  4. 4. RubyKaigi n !!Tuesday, 12010 3 July 19, 2011 4
  5. 5. Ruby 04 Sapporo RubyKaigi 04 Summer 2012Tuesday, July 19, 2011 5
  6. 6. I have some question.Tuesday, July 19, 2011 6
  7. 7. Do you use Float values?Tuesday, July 19, 2011 7
  8. 8. Do you understand Float well?Tuesday, July 19, 2011 8
  9. 9. Float is too difficult.Tuesday, July 19, 2011 9
  10. 10. Reading difficultyTuesday, July 19, 2011 10
  11. 11. ruby-1.9.2-p290 :001 > 76287755398823936.0 => 76287755398823940.0 ruby-1.9.2-p290 :002 >Tuesday, July 19, 2011 11
  12. 12. Comparing difficultyTuesday, July 19, 2011 12
  13. 13. ruby-1.9.2-p290 :001 > 12.4 * 1.05 == 13.02 => false ruby-1.9.2-p290 :002 > 12.4 * 1.05 => 13.020000000000001 ruby-1.9.2-p290 :003 >Tuesday, July 19, 2011 13
  14. 14. Representation differenceTuesday, July 19, 2011 14
  15. 15. Human: Decimal Internal: BinaryTuesday, July 19, 2011 15
  16. 16. Concept differenceTuesday, July 19, 2011 16
  17. 17. We think Float is a number.Tuesday, July 19, 2011 17
  18. 18. It is real that Float is a range.Tuesday, July 19, 2011 18
  19. 19. They’re troublesomeTuesday, July 19, 2011 19
  20. 20. There is a solutionTuesday, July 19, 2011 20
  21. 21. Why not use Rational.Tuesday, July 19, 2011 21
  22. 22. It is difficult, too.Tuesday, July 19, 2011 22
  23. 23. Ruby doesn’t have any literal notations for RationalTuesday, July 19, 2011 23
  24. 24. Does a fractional notation solve the problems?Tuesday, July 19, 2011 24
  25. 25. No!Tuesday, July 19, 2011 25
  26. 26. We naturally use decimal point notation.Tuesday, July 19, 2011 26
  27. 27. We need a decimal- point notation for representing a Rational.Tuesday, July 19, 2011 27
  28. 28. ruby--p290 :001 > 13.02.class => Rational ruby--p290 :001 > 12.4 * 1.05 == 13.02 => true ruby-1.9.2-p290 :002 > 12.4 * 1.05 => 13.02 ruby-1.9.2-p290 :003 > 13.02 / 3 => (217/50)Tuesday, July 19, 2011 28
  29. 29. Do you worry about Rational is slow?Tuesday, July 19, 2011 29
  30. 30. We can optimize for denominators of 10nTuesday, July 19, 2011 30
  31. 31. Float isn’t as so fast as you thinkTuesday, July 19, 2011 31
  32. 32. If you need fast Float calculationTuesday, July 19, 2011 32
  33. 33. Write it in C as extension libraryTuesday, July 19, 2011 33
  34. 34. If you need to calculate with arrays of FloatTuesday, July 19, 2011 34
  35. 35. Use NArrayTuesday, July 19, 2011 35
  36. 36. Rational may be what you wantTuesday, July 19, 2011 36
  37. 37. This talk’s background, demonstrations, and more detail descriptionsTuesday, July 19, 2011 37
  38. 38. Tuesday, July 19, 2011 38
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×