0

我到处搜寻,但没有找到与我类似的情况。. Xcode/Objective C 的新手,我正在组合一个双重用途(分数/小数)计算器应用程序。我在分数上找到了一些好东西,并让它们正确计算。然而,小数是另一回事。我可以让它出现在这个:

    -(IBAction) pressDecimal
    {
     NSRange range = [display.text rangeOfString:@"."];
                 if ( range.location == NSNotFound ) {
                 display.text = [display.text stringByAppendingString:@"."];
    }

或这个:

    -(IBAction) pressDecimal
 {
   [displayString appendString: @"."];
   display.text = displayString;
 }

后者效果很好,可以在计算器上显示。我尝试将它作为插槽读取,双倍,我似乎无法正确读取它......这是我获取数字的方式:

     - (void) workNums: (int) nums

{

currentNumber = currentNumber * 10 + nums;
[displayString appendString:
 [NSString stringWithFormat: @"%i", nums]];
display.text = displayString;

}

    //uses tags from attribute inspector (decimal tagged 10)
  -(IBAction)pressNum:(UIButton *)sendIT
{
   int nums = sendIT.tag;
   [self workNums: nums];
}

我到处寻找,尝试从浮点数更改为双精度数(当我与它们一起玩时,我可以让它显示 0.00)这也是我将分数的答案转换为小数的方法..它也很好用:

  - (double) convertToNum
 {
if (denominator != 0)
    return (double) numerator / denominator;
else 
    return NAN;

再说一遍,清楚地说...我怎样才能让Objective C看到应用程序中输入的小数,并将答案正确地显示为小数..我搞砸了,因为我开始这个主要是一个分数计算器?感谢一个从 BASIC 转到 Objective C 的菜鸟

编辑 4/27/12 * ** (Stack 的新手 - 但请阅读我在下面的评论.. 我正在寻找为什么我不能将小数读入我的程序......我尝试从整数(其中我知道不会工作)和双打和浮动,但是当我把这一切都作为双打运行时,我得到的只是用户输入的 0.00:

     -(IBAction)pressNum:(UIButton *)sendIT
     {
         int nums = sendIT.tag;
         [self workNums: nums];
     }

        - (void) workNums: (int) nums
     {

     currentNumber = currentNumber * 10 + nums;
     [displayString appendString:
     [NSString stringWithFormat: @"%i", nums]];
     display.text = displayString;
     }

因此,目标是能够计算用户输入的十进制数......关于 if/else 情况的任何建议,因为这些数字在累加器中建立 / 和 currentNumber 的双倍,并在以后变成分子/分母..(这可能是我的问题,但它不应该很难,但我很难用 BOOL 或其他东西说,嘿..这不是分数,它是小数 - 所以让这样做 - 请帮忙!!快疯了!

4

1 回答 1

0

我可能认为这比它简单得多,但是:如果你已经有一个类似@"3.14"in的字符串,displayString那么你可以将它直接转换为双精度:

double doubleValue = [displayString doubleValue];

这还不足以获得双精度值并执行计算吗?

于 2012-04-25T02:09:10.140 回答