[MacRuby-devel] [MacRuby] #473: setObjectValue does not set floats, integers in NSTextFields properly.
MacRuby
ruby-noreply at macosforge.org
Sun Dec 6 19:15:18 PST 2009
#473: setObjectValue does not set floats, integers in NSTextFields properly.
-----------------------------------+----------------------------------------
Reporter: johnmacshea@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: major | Milestone:
Component: MacRuby | Keywords: NSTextField, setObjectValue
-----------------------------------+----------------------------------------
Description changed by lsansonetti@…:
Old description:
> When using setObjectValue (NSControl) with MacRuby floats and integer,
> though they are a subclass of NSNumber,they are not properly set
> (copied?).
>
> For example in macirb:
> irb(main):001:0> framework "Cocoa"
> => true
> irb(main):002:0> tf = NSTextField.alloc.init
> => #<NSTextField:0x20024b5a0>
> irb(main):003:0> num = NSNumber.numberWithFloat(23.3)
> => 23.2999992370605
> irb(main):004:0> tf.setObjectValue(num)
> => #<NSTextField:0x20024b5a0>
> irb(main):005:0> p tf.stringValue
> "0"
> => "0"
> irb(main):006:0> p num.superclass.superclass
> NSNumber
> => NSNumber
> irb(main):007:0> tf.setFloatValue(23.3)
> => #<NSTextField:0x20024b5a0>
> irb(main):008:0> p tf.stringValue
> "23.29999923706055"
> => "23.29999923706055"
>
> or, more simply:
>
> irb(main):013:0> tf.setObjectValue(23.3)
> => #<NSTextField:0x20024b5a0>
> irb(main):014:0> p tf.stringValue
> "0"
> => "0"
>
> To contrast with proper behavior, with the following obj C code:
>
> NSTextField *tf = [[NSTextField alloc] init];
> NSNumber *num = [NSNumber numberWithFloat:23.3];
> [tf setObjectValue:num];
> NSLog(@"string value of tf %@", [tf stringValue]);
>
> results in the following:
>
> 2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3
New description:
When using setObjectValue (NSControl) with MacRuby floats and integer,
though they are a subclass of NSNumber,they are not properly set
(copied?).
For example in macirb:
{{{
irb(main):001:0> framework "Cocoa"
=> true
irb(main):002:0> tf = NSTextField.alloc.init
=> #<NSTextField:0x20024b5a0>
irb(main):003:0> num = NSNumber.numberWithFloat(23.3)
=> 23.2999992370605
irb(main):004:0> tf.setObjectValue(num)
=> #<NSTextField:0x20024b5a0>
irb(main):005:0> p tf.stringValue
"0"
=> "0"
irb(main):006:0> p num.superclass.superclass
NSNumber
=> NSNumber
irb(main):007:0> tf.setFloatValue(23.3)
=> #<NSTextField:0x20024b5a0>
irb(main):008:0> p tf.stringValue
"23.29999923706055"
=> "23.29999923706055"
or, more simply:
irb(main):013:0> tf.setObjectValue(23.3)
=> #<NSTextField:0x20024b5a0>
irb(main):014:0> p tf.stringValue
"0"
=> "0"
}}}
To contrast with proper behavior, with the following obj C code:
{{{
NSTextField *tf = [[NSTextField alloc] init];
NSNumber *num = [NSNumber numberWithFloat:23.3];
[tf setObjectValue:num];
NSLog(@"string value of tf %@", [tf stringValue]);
}}}
results in the following:
2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3
--
--
Ticket URL: <http://www.macruby.org/trac/ticket/473#comment:1>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list