Changeset 1141
- Timestamp:
- 12/28/03 11:03:35 (5 years ago)
- Files:
-
- trunk/lib/xsd/datatypes.rb (modified) (3 diffs)
- trunk/test/soap/test_basetype.rb (modified) (6 diffs)
- trunk/test/xsd/test_xsd.rb (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/xsd/datatypes.rb
r1072 r1141 269 269 module FloatConstants 270 270 NaN = 0.0/0.0 271 POSITIVE_INF = 1.0/0.0271 POSITIVE_INF = +1.0/0.0 272 272 NEGATIVE_INF = -1.0/0.0 273 POSITIVE_ZERO = +1.0/POSITIVE_INF 274 NEGATIVE_ZERO = -1.0/POSITIVE_INF 275 MIN_POSITIVE_SINGLE = 2 ** -149 273 276 end 274 277 … … 321 324 '-INF' 322 325 else 323 sign = (1 / @data > 0.0) ? '+' : '-'326 sign = XSDFloat.positive?(@data) ? '+' : '-' 324 327 sign + sprintf("%.10g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 } 325 328 end … … 330 333 if f.nan? || f.infinite? 331 334 f 335 elsif f.abs < MIN_POSITIVE_SINGLE 336 XSDFloat.positive?(f) ? POSITIVE_ZERO : NEGATIVE_ZERO 332 337 else 333 packed = [f].pack("f") 334 (/\A\0*\z/ =~ packed)? 0.0 : f 335 end 338 f 339 end 340 end 341 342 def self.positive?(value) 343 (1 / value) > 0.0 336 344 end 337 345 end trunk/test/soap/test_basetype.rb
r1136 r1141 157 157 3.14159265358979, 158 158 12.34e36, 159 1.4 e-45,160 -1.4 e-45,159 1.402e-45, 160 -1.402e-45, 161 161 ] 162 162 targets.each do |f| … … 167 167 "+3.141592654", 168 168 "+1.234e+37", 169 "+1.4 e-45",170 "-1.4 e-45",169 "+1.402e-45", 170 "-1.402e-45", 171 171 ] 172 172 targets.each do |f| … … 179 179 [3.14159265358979, "+3.141592654"], 180 180 [12.34e36, "+1.234e+37"], 181 [1.4 e-45, "+1.4e-45"],182 [-1.4 e-45, "-1.4e-45"],183 ["1.4 e", "+1.4"],181 [1.402e-45, "+1.402e-45"], 182 [-1.402e-45, "-1.402e-45"], 183 ["1.402e", "+1.402"], 184 184 ["12.34E36", "+1.234e+37"], 185 ["1.4 E-45", "+1.4e-45"],186 ["-1.4 E-45", "-1.4e-45"],187 ["1.4 E", "+1.4"],185 ["1.402E-45", "+1.402e-45"], 186 ["-1.402E-45", "-1.402e-45"], 187 ["1.402E", "+1.402"], 188 188 ] 189 189 targets.each do |f, str| … … 222 222 3.14159265358979, 223 223 12.34e36, 224 1.4 e-45,225 -1.4 e-45,224 1.402e-45, 225 -1.402e-45, 226 226 ] 227 227 targets.each do |f| … … 232 232 "+3.14159265358979", 233 233 "+1.234e+37", 234 "+1.4 e-45",235 "-1.4 e-45",234 "+1.402e-45", 235 "-1.402e-45", 236 236 ] 237 237 targets.each do |f| … … 244 244 [3.14159265358979, "+3.14159265358979"], 245 245 [12.34e36, "+1.234e+37"], 246 [1.4 e-45, "+1.4e-45"],247 [-1.4 e-45, "-1.4e-45"],248 ["1.4 e", "+1.4"],246 [1.402e-45, "+1.402e-45"], 247 [-1.402e-45, "-1.402e-45"], 248 ["1.402e", "+1.402"], 249 249 ["12.34E36", "+1.234e+37"], 250 ["1.4 E-45", "+1.4e-45"],251 ["-1.4 E-45", "-1.4e-45"],252 ["1.4 E", "+1.4"],250 ["1.402E-45", "+1.402e-45"], 251 ["-1.402E-45", "-1.402e-45"], 252 ["1.402E", "+1.402"], 253 253 ] 254 254 targets.each do |f, str| trunk/test/xsd/test_xsd.rb
r1136 r1141 190 190 3.14159265358979, 191 191 12.34e36, 192 1.4 e-45,193 -1.4 e-45,192 1.402e-45, 193 -1.402e-45, 194 194 ] 195 195 targets.each do |f| … … 200 200 "+3.141592654", 201 201 "+1.234e+37", 202 "+1.4 e-45",203 "-1.4 e-45",202 "+1.402e-45", 203 "-1.402e-45", 204 204 ] 205 205 targets.each do |f| … … 212 212 [3.14159265358979, "+3.141592654"], 213 213 [12.34e36, "+1.234e+37"], 214 [1.4 e-45, "+1.4e-45"],215 [-1.4 e-45, "-1.4e-45"],216 ["1.4 e", "+1.4"],214 [1.402e-45, "+1.402e-45"], 215 [-1.402e-45, "-1.402e-45"], 216 ["1.402e", "+1.402"], 217 217 ["12.34E36", "+1.234e+37"], 218 ["1.4 E-45", "+1.4e-45"],219 ["-1.4 E-45", "-1.4e-45"],220 ["1.4 E", "+1.4"],218 ["1.402E-45", "+1.402e-45"], 219 ["-1.402E-45", "-1.402e-45"], 220 ["1.402E", "+1.402"], 221 221 ] 222 222 targets.each do |f, str| … … 255 255 3.14159265358979, 256 256 12.34e36, 257 1.4 e-45,258 -1.4 e-45,257 1.402e-45, 258 -1.402e-45, 259 259 ] 260 260 targets.each do |f| … … 265 265 "+3.14159265358979", 266 266 "+1.234e+37", 267 "+1.4 e-45",268 "-1.4 e-45",267 "+1.402e-45", 268 "-1.402e-45", 269 269 ] 270 270 targets.each do |f| … … 277 277 [3.14159265358979, "+3.14159265358979"], 278 278 [12.34e36, "+1.234e+37"], 279 [1.4 e-45, "+1.4e-45"],280 [-1.4 e-45, "-1.4e-45"],281 ["1.4 e", "+1.4"],279 [1.402e-45, "+1.402e-45"], 280 [-1.402e-45, "-1.402e-45"], 281 ["1.402e", "+1.402"], 282 282 ["12.34E36", "+1.234e+37"], 283 ["1.4 E-45", "+1.4e-45"],284 ["-1.4 E-45", "-1.4e-45"],285 ["1.4 E", "+1.4"],283 ["1.402E-45", "+1.402e-45"], 284 ["-1.402E-45", "-1.402e-45"], 285 ["1.402E", "+1.402"], 286 286 ] 287 287 targets.each do |f, str|