roundUpTo:? truncatedTo:

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

roundUpTo:? truncatedTo:

Stephane Ducasse-3
Hi


I'm working on improving the number of named colors we have.
I got this list
And I did the following to convert numbers to float and I want to keep
only max three decimal

Now I do not get

0.9420000000001 roundUpTo: 0.001
and the same truncatedTo: 0.001
do not work

list collect: [ :each |
| split color name |
split := Character tab split: each.
color := Character space split: (split at: 1).
color := color select: [ :c| c isNotEmpty ].
color := color collect: [ :c | (c asInteger / 255) asFloat roundUpTo: 0.001 ].
name := split at: 3.
{name asSymbol.
color asArray} ] as: Array


(Character cr split:
'255 250 250 snow
248 248 255 ghost white
248 248 255 GhostWhite
245 245 245 white smoke
245 245 245 WhiteSmoke
220 220 220 gainsboro
255 250 240 floral white
255 250 240 FloralWhite
253 245 230 old lace
253 245 230 OldLace
250 240 230 linen
250 235 215 antique white
250 235 215 AntiqueWhite
255 239 213 papaya whip
255 239 213 PapayaWhip
255 235 205 blanched almond
255 235 205 BlanchedAlmond
255 228 196 bisque
255 218 185 peach puff
255 218 185 PeachPuff
255 222 173 navajo white
255 222 173 NavajoWhite
255 228 181 moccasin
255 248 220 cornsilk
255 255 240 ivory
255 250 205 lemon chiffon
255 250 205 LemonChiffon
255 245 238 seashell
240 255 240 honeydew
245 255 250 mint cream
245 255 250 MintCream
240 255 255 azure
240 248 255 alice blue
240 248 255 AliceBlue
230 230 250 lavender
255 240 245 lavender blush
255 240 245 LavenderBlush
255 228 225 misty rose
255 228 225 MistyRose
255 255 255 white
  0   0   0 black
 47  79  79 dark slate gray
 47  79  79 DarkSlateGray
 47  79  79 dark slate grey
 47  79  79 DarkSlateGrey
105 105 105 dim gray
105 105 105 DimGray
105 105 105 dim grey
105 105 105 DimGrey
112 128 144 slate gray
112 128 144 SlateGray
112 128 144 slate grey
112 128 144 SlateGrey
119 136 153 light slate gray
119 136 153 LightSlateGray
119 136 153 light slate grey
119 136 153 LightSlateGrey
190 190 190 gray
190 190 190 grey
211 211 211 light grey
211 211 211 LightGrey
211 211 211 light gray
211 211 211 LightGray
 25  25 112 midnight blue
 25  25 112 MidnightBlue
  0   0 128 navy
  0   0 128 navy blue
  0   0 128 NavyBlue
100 149 237 cornflower blue
100 149 237 CornflowerBlue
 72  61 139 dark slate blue
 72  61 139 DarkSlateBlue
106  90 205 slate blue
106  90 205 SlateBlue
123 104 238 medium slate blue
123 104 238 MediumSlateBlue
132 112 255 light slate blue
132 112 255 LightSlateBlue
  0   0 205 medium blue
  0   0 205 MediumBlue
 65 105 225 royal blue
 65 105 225 RoyalBlue
  0   0 255 blue
 30 144 255 dodger blue
 30 144 255 DodgerBlue
  0 191 255 deep sky blue
  0 191 255 DeepSkyBlue
135 206 235 sky blue
135 206 235 SkyBlue
135 206 250 light sky blue
135 206 250 LightSkyBlue
 70 130 180 steel blue
 70 130 180 SteelBlue
176 196 222 light steel blue
176 196 222 LightSteelBlue
173 216 230 light blue
173 216 230 LightBlue
176 224 230 powder blue
176 224 230 PowderBlue
175 238 238 pale turquoise
175 238 238 PaleTurquoise
  0 206 209 dark turquoise
  0 206 209 DarkTurquoise
 72 209 204 medium turquoise
 72 209 204 MediumTurquoise
 64 224 208 turquoise
  0 255 255 cyan
224 255 255 light cyan
224 255 255 LightCyan
 95 158 160 cadet blue
 95 158 160 CadetBlue
102 205 170 medium aquamarine
102 205 170 MediumAquamarine
127 255 212 aquamarine
  0 100   0 dark green
  0 100   0 DarkGreen
 85 107  47 dark olive green
 85 107  47 DarkOliveGreen
143 188 143 dark sea green
143 188 143 DarkSeaGreen
 46 139  87 sea green
 46 139  87 SeaGreen
 60 179 113 medium sea green
 60 179 113 MediumSeaGreen
 32 178 170 light sea green
 32 178 170 LightSeaGreen
152 251 152 pale green
152 251 152 PaleGreen
  0 255 127 spring green
  0 255 127 SpringGreen
124 252   0 lawn green
124 252   0 LawnGreen
  0 255   0 green
127 255   0 chartreuse
  0 250 154 medium spring green
  0 250 154 MediumSpringGreen
173 255  47 green yellow
173 255  47 GreenYellow
 50 205  50 lime green
 50 205  50 LimeGreen
154 205  50 yellow green
154 205  50 YellowGreen
 34 139  34 forest green
 34 139  34 ForestGreen
107 142  35 olive drab
107 142  35 OliveDrab
189 183 107 dark khaki
189 183 107 DarkKhaki
240 230 140 khaki
238 232 170 pale goldenrod
238 232 170 PaleGoldenrod
250 250 210 light goldenrod yellow
250 250 210 LightGoldenrodYellow
255 255 224 light yellow
255 255 224 LightYellow
255 255   0 yellow
255 215   0 gold
238 221 130 light goldenrod
238 221 130 LightGoldenrod
218 165  32 goldenrod
184 134  11 dark goldenrod
184 134  11 DarkGoldenrod
188 143 143 rosy brown
188 143 143 RosyBrown
205  92  92 indian red
205  92  92 IndianRed
139  69  19 saddle brown
139  69  19 SaddleBrown
160  82  45 sienna
205 133  63 peru
222 184 135 burlywood
245 245 220 beige
245 222 179 wheat
244 164  96 sandy brown
244 164  96 SandyBrown
210 180 140 tan
210 105  30 chocolate
178  34  34 firebrick
165  42  42 brown
233 150 122 dark salmon
233 150 122 DarkSalmon
250 128 114 salmon
255 160 122 light salmon
255 160 122 LightSalmon
255 165   0 orange
255 140   0 dark orange
255 140   0 DarkOrange
255 127  80 coral
240 128 128 light coral
240 128 128 LightCoral
255  99  71 tomato
255  69   0 orange red
255  69   0 OrangeRed
255   0   0 red
255 105 180 hot pink
255 105 180 HotPink
255  20 147 deep pink
255  20 147 DeepPink
255 192 203 pink
255 182 193 light pink
255 182 193 LightPink
219 112 147 pale violet red
219 112 147 PaleVioletRed
176  48  96 maroon
199  21 133 medium violet red
199  21 133 MediumVioletRed
208  32 144 violet red
208  32 144 VioletRed
255   0 255 magenta
238 130 238 violet
221 160 221 plum
218 112 214 orchid
186  85 211 medium orchid
186  85 211 MediumOrchid
153  50 204 dark orchid
153  50 204 DarkOrchid
148   0 211 dark violet
148   0 211 DarkViolet
138  43 226 blue violet
138  43 226 BlueViolet
160  32 240 purple
147 112 219 medium purple
147 112 219 MediumPurple
216 191 216 thistle
255 250 250 snow1
238 233 233 snow2
205 201 201 snow3
139 137 137 snow4
255 245 238 seashell1
238 229 222 seashell2
205 197 191 seashell3
139 134 130 seashell4
255 239 219 AntiqueWhite1
238 223 204 AntiqueWhite2
205 192 176 AntiqueWhite3
139 131 120 AntiqueWhite4
255 228 196 bisque1
238 213 183 bisque2
205 183 158 bisque3
139 125 107 bisque4
255 218 185 PeachPuff1
238 203 173 PeachPuff2
205 175 149 PeachPuff3
139 119 101 PeachPuff4
255 222 173 NavajoWhite1
238 207 161 NavajoWhite2
205 179 139 NavajoWhite3
139 121 94 NavajoWhite4
255 250 205 LemonChiffon1
238 233 191 LemonChiffon2
205 201 165 LemonChiffon3
139 137 112 LemonChiffon4
255 248 220 cornsilk1
238 232 205 cornsilk2
205 200 177 cornsilk3
139 136 120 cornsilk4
255 255 240 ivory1
238 238 224 ivory2
205 205 193 ivory3
139 139 131 ivory4
240 255 240 honeydew1
224 238 224 honeydew2
193 205 193 honeydew3
131 139 131 honeydew4
255 240 245 LavenderBlush1
238 224 229 LavenderBlush2
205 193 197 LavenderBlush3
139 131 134 LavenderBlush4
255 228 225 MistyRose1
238 213 210 MistyRose2
205 183 181 MistyRose3
139 125 123 MistyRose4
240 255 255 azure1
224 238 238 azure2
193 205 205 azure3
131 139 139 azure4
131 111 255 SlateBlue1
122 103 238 SlateBlue2
105  89 205 SlateBlue3
 71  60 139 SlateBlue4
 72 118 255 RoyalBlue1
 67 110 238 RoyalBlue2
 58  95 205 RoyalBlue3
 39  64 139 RoyalBlue4
  0   0 255 blue1
  0   0 238 blue2
  0   0 205 blue3
  0   0 139 blue4
 30 144 255 DodgerBlue1
 28 134 238 DodgerBlue2
 24 116 205 DodgerBlue3
 16  78 139 DodgerBlue4
 99 184 255 SteelBlue1
 92 172 238 SteelBlue2
 79 148 205 SteelBlue3
 54 100 139 SteelBlue4
  0 191 255 DeepSkyBlue1
  0 178 238 DeepSkyBlue2
  0 154 205 DeepSkyBlue3
  0 104 139 DeepSkyBlue4
135 206 255 SkyBlue1
126 192 238 SkyBlue2
108 166 205 SkyBlue3
 74 112 139 SkyBlue4
176 226 255 LightSkyBlue1
164 211 238 LightSkyBlue2
141 182 205 LightSkyBlue3
 96 123 139 LightSkyBlue4
198 226 255 SlateGray1
185 211 238 SlateGray2
159 182 205 SlateGray3
108 123 139 SlateGray4
202 225 255 LightSteelBlue1
188 210 238 LightSteelBlue2
162 181 205 LightSteelBlue3
110 123 139 LightSteelBlue4
191 239 255 LightBlue1
178 223 238 LightBlue2
154 192 205 LightBlue3
104 131 139 LightBlue4
224 255 255 LightCyan1
209 238 238 LightCyan2
180 205 205 LightCyan3
122 139 139 LightCyan4
187 255 255 PaleTurquoise1
174 238 238 PaleTurquoise2
150 205 205 PaleTurquoise3
102 139 139 PaleTurquoise4
152 245 255 CadetBlue1
142 229 238 CadetBlue2
122 197 205 CadetBlue3
 83 134 139 CadetBlue4
  0 245 255 turquoise1
  0 229 238 turquoise2
  0 197 205 turquoise3
  0 134 139 turquoise4
  0 255 255 cyan1
  0 238 238 cyan2
  0 205 205 cyan3
  0 139 139 cyan4
151 255 255 DarkSlateGray1
141 238 238 DarkSlateGray2
121 205 205 DarkSlateGray3
 82 139 139 DarkSlateGray4
127 255 212 aquamarine1
118 238 198 aquamarine2
102 205 170 aquamarine3
 69 139 116 aquamarine4
193 255 193 DarkSeaGreen1
180 238 180 DarkSeaGreen2
155 205 155 DarkSeaGreen3
105 139 105 DarkSeaGreen4
 84 255 159 SeaGreen1
 78 238 148 SeaGreen2
 67 205 128 SeaGreen3
 46 139 87 SeaGreen4
154 255 154 PaleGreen1
144 238 144 PaleGreen2
124 205 124 PaleGreen3
 84 139 84 PaleGreen4
  0 255 127 SpringGreen1
  0 238 118 SpringGreen2
  0 205 102 SpringGreen3
  0 139 69 SpringGreen4
  0 255   0 green1
  0 238   0 green2
  0 205   0 green3
  0 139   0 green4
127 255   0 chartreuse1
118 238   0 chartreuse2
102 205   0 chartreuse3
 69 139   0 chartreuse4
192 255 62 OliveDrab1
179 238 58 OliveDrab2
154 205 50 OliveDrab3
105 139 34 OliveDrab4
202 255 112 DarkOliveGreen1
188 238 104 DarkOliveGreen2
162 205 90 DarkOliveGreen3
110 139 61 DarkOliveGreen4
255 246 143 khaki1
238 230 133 khaki2
205 198 115 khaki3
139 134 78 khaki4
255 236 139 LightGoldenrod1
238 220 130 LightGoldenrod2
205 190 112 LightGoldenrod3
139 129 76 LightGoldenrod4
255 255 224 LightYellow1
238 238 209 LightYellow2
205 205 180 LightYellow3
139 139 122 LightYellow4
255 255   0 yellow1
238 238   0 yellow2
205 205   0 yellow3
139 139   0 yellow4
255 215   0 gold1
238 201   0 gold2
205 173   0 gold3
139 117   0 gold4
255 193 37 goldenrod1
238 180 34 goldenrod2
205 155 29 goldenrod3
139 105 20 goldenrod4
255 185 15 DarkGoldenrod1
238 173 14 DarkGoldenrod2
205 149 12 DarkGoldenrod3
139 101   8 DarkGoldenrod4
255 193 193 RosyBrown1
238 180 180 RosyBrown2
205 155 155 RosyBrown3
139 105 105 RosyBrown4
255 106 106 IndianRed1
238  99 99 IndianRed2
205  85 85 IndianRed3
139  58 58 IndianRed4
255 130 71 sienna1
238 121 66 sienna2
205 104 57 sienna3
139  71 38 sienna4
255 211 155 burlywood1
238 197 145 burlywood2
205 170 125 burlywood3
139 115 85 burlywood4
255 231 186 wheat1
238 216 174 wheat2
205 186 150 wheat3
139 126 102 wheat4
255 165 79 tan1
238 154 73 tan2
205 133 63 tan3
139  90 43 tan4
255 127 36 chocolate1
238 118 33 chocolate2
205 102 29 chocolate3
139  69 19 chocolate4
255  48 48 firebrick1
238  44 44 firebrick2
205  38 38 firebrick3
139  26 26 firebrick4
255  64 64 brown1
238  59 59 brown2
205  51 51 brown3
139  35 35 brown4
255 140 105 salmon1
238 130 98 salmon2
205 112 84 salmon3
139  76 57 salmon4
255 160 122 LightSalmon1
238 149 114 LightSalmon2
205 129 98 LightSalmon3
139  87 66 LightSalmon4
255 165   0 orange1
238 154   0 orange2
205 133   0 orange3
139  90   0 orange4
255 127   0 DarkOrange1
238 118   0 DarkOrange2
205 102   0 DarkOrange3
139  69   0 DarkOrange4
255 114 86 coral1
238 106 80 coral2
205  91 69 coral3
139  62 47 coral4
255  99 71 tomato1
238  92 66 tomato2
205  79 57 tomato3
139  54 38 tomato4
255  69   0 OrangeRed1
238  64   0 OrangeRed2
205  55   0 OrangeRed3
139  37   0 OrangeRed4
255   0   0 red1
238   0   0 red2
205   0   0 red3
139   0   0 red4
255  20 147 DeepPink1
238  18 137 DeepPink2
205  16 118 DeepPink3
139  10 80 DeepPink4
255 110 180 HotPink1
238 106 167 HotPink2
205  96 144 HotPink3
139  58  98 HotPink4
255 181 197 pink1
238 169 184 pink2
205 145 158 pink3
139  99 108 pink4
255 174 185 LightPink1
238 162 173 LightPink2
205 140 149 LightPink3
139  95 101 LightPink4
255 130 171 PaleVioletRed1
238 121 159 PaleVioletRed2
205 104 137 PaleVioletRed3
139  71 93 PaleVioletRed4
255  52 179 maroon1
238  48 167 maroon2
205  41 144 maroon3
139  28 98 maroon4
255  62 150 VioletRed1
238  58 140 VioletRed2
205  50 120 VioletRed3
139  34 82 VioletRed4
255   0 255 magenta1
238   0 238 magenta2
205   0 205 magenta3
139   0 139 magenta4
255 131 250 orchid1
238 122 233 orchid2
205 105 201 orchid3
139  71 137 orchid4
255 187 255 plum1
238 174 238 plum2
205 150 205 plum3
139 102 139 plum4
224 102 255 MediumOrchid1
209  95 238 MediumOrchid2
180  82 205 MediumOrchid3
122  55 139 MediumOrchid4
191  62 255 DarkOrchid1
178  58 238 DarkOrchid2
154  50 205 DarkOrchid3
104  34 139 DarkOrchid4
155  48 255 purple1
145  44 238 purple2
125  38 205 purple3
 85  26 139 purple4
171 130 255 MediumPurple1
159 121 238 MediumPurple2
137 104 205 MediumPurple3
 93  71 139 MediumPurple4
255 225 255 thistle1
238 210 238 thistle2
205 181 205 thistle3
139 123 139 thistle4
  0   0   0 gray0
  0   0   0 grey0
  3   3   3 gray1
  3   3   3 grey1
  5   5   5 gray2
  5   5   5 grey2
  8   8   8 gray3
  8   8   8 grey3
 10  10  10 gray4
 10  10  10 grey4
 13  13  13 gray5
 13  13  13 grey5
 15  15  15 gray6
 15  15  15 grey6
 18  18  18 gray7
 18  18  18 grey7
 20  20  20 gray8
 20  20  20 grey8
 23  23  23 gray9
 23  23  23 grey9
 26  26  26 gray10
 26  26  26 grey10
 28  28  28 gray11
 28  28  28 grey11
 31  31  31 gray12
 31  31  31 grey12
 33  33  33 gray13
 33  33  33 grey13
 36  36  36 gray14
 36  36  36 grey14
 38  38  38 gray15
 38  38  38 grey15
 41  41  41 gray16
 41  41  41 grey16
 43  43  43 gray17
 43  43  43 grey17
 46  46  46 gray18
 46  46  46 grey18
 48  48  48 gray19
 48  48  48 grey19
 51  51  51 gray20
 51  51  51 grey20
 54  54  54 gray21
 54  54  54 grey21
 56  56  56 gray22
 56  56  56 grey22
 59  59  59 gray23
 59  59  59 grey23
 61  61  61 gray24
 61  61  61 grey24
 64  64  64 gray25
 64  64  64 grey25
 66  66  66 gray26
 66  66  66 grey26
 69  69  69 gray27
 69  69  69 grey27
 71  71  71 gray28
 71  71  71 grey28
 74  74  74 gray29
 74  74  74 grey29
 77  77  77 gray30
 77  77  77 grey30
 79  79  79 gray31
 79  79  79 grey31
 82  82  82 gray32
 82  82  82 grey32
 84  84  84 gray33
 84  84  84 grey33
 87  87  87 gray34
 87  87  87 grey34
 89  89  89 gray35
 89  89  89 grey35
 92  92  92 gray36
 92  92  92 grey36
 94  94  94 gray37
 94  94  94 grey37
 97  97  97 gray38
 97  97  97 grey38
 99  99  99 gray39
 99  99  99 grey39
102 102 102 gray40
102 102 102 grey40
105 105 105 gray41
105 105 105 grey41
107 107 107 gray42
107 107 107 grey42
110 110 110 gray43
110 110 110 grey43
112 112 112 gray44
112 112 112 grey44
115 115 115 gray45
115 115 115 grey45
117 117 117 gray46
117 117 117 grey46
120 120 120 gray47
120 120 120 grey47
122 122 122 gray48
122 122 122 grey48
125 125 125 gray49
125 125 125 grey49
127 127 127 gray50
127 127 127 grey50
130 130 130 gray51
130 130 130 grey51
133 133 133 gray52
133 133 133 grey52
135 135 135 gray53
135 135 135 grey53
138 138 138 gray54
138 138 138 grey54
140 140 140 gray55
140 140 140 grey55
143 143 143 gray56
143 143 143 grey56
145 145 145 gray57
145 145 145 grey57
148 148 148 gray58
148 148 148 grey58
150 150 150 gray59
150 150 150 grey59
153 153 153 gray60
153 153 153 grey60
156 156 156 gray61
156 156 156 grey61
158 158 158 gray62
158 158 158 grey62
161 161 161 gray63
161 161 161 grey63
163 163 163 gray64
163 163 163 grey64
166 166 166 gray65
166 166 166 grey65
168 168 168 gray66
168 168 168 grey66
171 171 171 gray67
171 171 171 grey67
173 173 173 gray68
173 173 173 grey68
176 176 176 gray69
176 176 176 grey69
179 179 179 gray70
179 179 179 grey70
181 181 181 gray71
181 181 181 grey71
184 184 184 gray72
184 184 184 grey72
186 186 186 gray73
186 186 186 grey73
189 189 189 gray74
189 189 189 grey74
191 191 191 gray75
191 191 191 grey75
194 194 194 gray76
194 194 194 grey76
196 196 196 gray77
196 196 196 grey77
199 199 199 gray78
199 199 199 grey78
201 201 201 gray79
201 201 201 grey79
204 204 204 gray80
204 204 204 grey80
207 207 207 gray81
207 207 207 grey81
209 209 209 gray82
209 209 209 grey82
212 212 212 gray83
212 212 212 grey83
214 214 214 gray84
214 214 214 grey84
217 217 217 gray85
217 217 217 grey85
219 219 219 gray86
219 219 219 grey86
222 222 222 gray87
222 222 222 grey87
224 224 224 gray88
224 224 224 grey88
227 227 227 gray89
227 227 227 grey89
229 229 229 gray90
229 229 229 grey90
232 232 232 gray91
232 232 232 grey91
235 235 235 gray92
235 235 235 grey92
237 237 237 gray93
237 237 237 grey93
240 240 240 gray94
240 240 240 grey94
242 242 242 gray95
242 242 242 grey95
245 245 245 gray96
245 245 245 grey96
247 247 247 gray97
247 247 247 grey97
250 250 250 gray98
250 250 250 grey98
252 252 252 gray99
252 252 252 grey99
255 255 255 gray100
255 255 255 grey100
169 169 169 dark grey
169 169 169 DarkGrey
169 169 169 dark gray
169 169 169 DarkGray
0     0 139 dark blue
0     0 139 DarkBlue
0   139 139 dark cyan
0   139 139 DarkCyan
139   0 139 dark magenta
139   0 139 DarkMagenta
139   0   0 dark red
139   0   0 DarkRed
144 238 144 light green
144 238 144 LightGreen')  collect: [ :each |
| split color name |
split := Character tab split: each.
color := Character space split: (split at: 1).
color := color select: [ :c| c isNotEmpty ].
color := color collect: [ :c | (c asInteger / 255) asFloat roundUpTo: 0.001 ].
name := split at: 3.
{name asSymbol.
color asArray} ] as: Array

Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

HilaireFernandes
It i s funny to note how #round: message seems to have more success for
that:

0.9420000000001 round: 3.
  "0.942"


Le 26/12/2017 à 21:27, Stephane Ducasse a écrit :
> 0.9420000000001 roundUpTo: 0.001
> and the same truncatedTo: 0.001
> do not work

--
Dr. Geo
http://drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

Nicolas Cellier
Hi Hilaire,
it' not just funny: it's the exact case round: was made for.
Note that there is an opened issue suggesting the removal of round: (no time to check the exact ref now).

Alternatives if round: is deprecated could be:

(c / 255 roundTo: 1/1000) asFloat.
(c / 255 roundTo: 0.001s) asFloat.

I didn't verify if Pharo did change that, but Squeak RGB color components have 10 bits internally.
10 bits is 1024.
So rounding to 1/1000 was not enough to distinguish different colors.

Nicolas


2017-12-26 22:26 GMT+01:00 Hilaire <[hidden email]>:
It i s funny to note how #round: message seems to have more success for that:

0.9420000000001 round: 3.
 "0.942"



Le 26/12/2017 à 21:27, Stephane Ducasse a écrit :
0.9420000000001 roundUpTo: 0.001
and the same truncatedTo: 0.001
do not work

--
Dr. Geo
http://drgeo.eu




Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

Stephane Ducasse-3
Hi nicolas

Thanks for the information of color I was also looking for it. The
other packages that extended color used 1/1000 so I followed the
pattern.
I was thinking that I should use something like "printInexactlyOn:"
Now (too early for my brain to work) but I'm wondering the different
between round and roundUpTo:
I remember that once we discuss having an exact method where we can
pass the precision.

Stef




On Tue, Dec 26, 2017 at 11:51 PM, Nicolas Cellier
<[hidden email]> wrote:

> Hi Hilaire,
> it' not just funny: it's the exact case round: was made for.
> Note that there is an opened issue suggesting the removal of round: (no time
> to check the exact ref now).
>
> Alternatives if round: is deprecated could be:
>
> (c / 255 roundTo: 1/1000) asFloat.
> (c / 255 roundTo: 0.001s) asFloat.
>
> I didn't verify if Pharo did change that, but Squeak RGB color components
> have 10 bits internally.
> 10 bits is 1024.
> So rounding to 1/1000 was not enough to distinguish different colors.
>
> Nicolas
>
>
>
> 2017-12-26 22:26 GMT+01:00 Hilaire <[hidden email]>:
>>
>> It i s funny to note how #round: message seems to have more success for
>> that:
>>
>> 0.9420000000001 round: 3.
>>  "0.942"
>>
>>
>>
>> Le 26/12/2017 à 21:27, Stephane Ducasse a écrit :
>>>
>>> 0.9420000000001 roundUpTo: 0.001
>>> and the same truncatedTo: 0.001
>>> do not work
>>
>>
>> --
>> Dr. Geo
>> http://drgeo.eu
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

Stephane Ducasse-3
In reply to this post by Nicolas Cellier
BTW rountTo: does not solve my problem.
I will check the printing solution.

On Tue, Dec 26, 2017 at 11:51 PM, Nicolas Cellier
<[hidden email]> wrote:

> Hi Hilaire,
> it' not just funny: it's the exact case round: was made for.
> Note that there is an opened issue suggesting the removal of round: (no time
> to check the exact ref now).
>
> Alternatives if round: is deprecated could be:
>
> (c / 255 roundTo: 1/1000) asFloat.
> (c / 255 roundTo: 0.001s) asFloat.
>
> I didn't verify if Pharo did change that, but Squeak RGB color components
> have 10 bits internally.
> 10 bits is 1024.
> So rounding to 1/1000 was not enough to distinguish different colors.
>
> Nicolas
>
>
>
> 2017-12-26 22:26 GMT+01:00 Hilaire <[hidden email]>:
>>
>> It i s funny to note how #round: message seems to have more success for
>> that:
>>
>> 0.9420000000001 round: 3.
>>  "0.942"
>>
>>
>>
>> Le 26/12/2017 à 21:27, Stephane Ducasse a écrit :
>>>
>>> 0.9420000000001 roundUpTo: 0.001
>>> and the same truncatedTo: 0.001
>>> do not work
>>
>>
>> --
>> Dr. Geo
>> http://drgeo.eu
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

HilaireFernandes
In reply to this post by Nicolas Cellier
My funny was ironical because ;-) :

 1. I just learn about this #round: method.
 2. it is doing a better job than #roundTo:
 3. it is mathematically identical to #roundTo: but use positive power
    of 10 whereas the former use negative power of 10. I guess it
    produces a different impact on the internal representation of Float
    as powers of 2 sum

It is doing a better job, it correctly rounds 1.45 to 1.5 and not 1.4:

1.45 roundTo: 0.1 "1.4000000000000001"
1.45 round: 1 "1.5"

It looks like the right method to deprecate will be roundTo:, or may be
there are cases when one method is better, and vis versa. I am curious.


Le 26/12/2017 à 23:51, Nicolas Cellier a écrit :
> Hi Hilaire,
> it' not just funny: it's the exact case round: was made for.
> Note that there is an opened issue suggesting the removal of round:
> (no time to check the exact ref now).

--
Dr. Geo
http://drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: roundUpTo:? truncatedTo:

Martin McClure-2
In reply to this post by Stephane Ducasse-3
On 12/26/2017 12:27 PM, Stephane Ducasse wrote:
> Hi
>
>
> I'm working on improving the number of named colors we have.
> I got this list
> And I did the following to convert numbers to float and I want to keep
> only max three decimal
"float" and "three decimal" are fundamentally incompatible goals. Float
is a binary format, not decimal, so you cannot expect results to always
be exact in decimal.
>
> Now I do not get
>
> 0.9420000000001 roundUpTo: 0.001
There are many numbers that cannot be represented exactly as floats.
1/1000 is one of them:

0.001 > (1/1000)      --->  true

So what you're actually asking for is to round to some multiple of a
binary number that is close to, but not quite exactly, 1/1000.
Therefore, #roundUpTo: determines (correctly) that the answer should be
943 * 0.001, and computes that, and answers it. But since 0.001 is
greater than 1/1000, the result is greater than 943/1000.

There are a number of conceivable alternatives, depending on what you
want. But here, it's not clear why you want to do rounding at all in
this case -- the expense of a float is the same whether rounded or not,
so if you want floats I'd leave them unrounded and therefore more
accurately approximating the original input numbers.

Or if you want them exact, use fractions instead of floats.

Regards,

-Martin