Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将小数转换为负数_Swift_Ios8_Nsnumberformatter_Nsdecimalnumber - Fatal编程技术网

Swift 将小数转换为负数

Swift 将小数转换为负数,swift,ios8,nsnumberformatter,nsdecimalnumber,Swift,Ios8,Nsnumberformatter,Nsdecimalnumber,在swift中开发预算应用程序 本质上,有一个标签显示键盘文本输入到currencyStyle,并显示这个数字($5.00),然后等待用户选择借记或取款。若借记,那个么数字会附加到表中,但当涉及到取款(-)时,我就不知所措了 我想 将格式为货币的NSDecimalNumber转换为负数,以便附加到tableView:String($5.00到-$5.00) 将NSDecimalNumber值转换为负数,并添加到NSNumber数组中,该数组存储要计算的可用余额的数字(5.50到-5.50) 对于

在swift中开发预算应用程序

本质上,有一个标签显示键盘文本输入到currencyStyle,并显示这个数字($5.00),然后等待用户选择借记或取款。若借记,那个么数字会附加到表中,但当涉及到取款(-)时,我就不知所措了

我想

  • 将格式为货币的NSDecimalNumber转换为负数,以便附加到tableView:String($5.00到-$5.00)

  • 将NSDecimalNumber值转换为负数,并添加到NSNumber数组中,该数组存储要计算的可用余额的数字(5.50到-5.50)

  • 对于这两个方面,我都尝试过在Apple文档中使用NSNumberFormatter negativePrefix和其他一些属性,但都没有用。甚至尝试创建负NSNumber值=-100.0,但应用程序在除法过程中崩溃


    任何帮助都将不胜感激

    要轻松否定
    NSDecimalNumber
    在Swift中创建如下扩展名:

    extension NSDecimalNumber {
        func negative() -> NSDecimalNumber {
            return self.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true));
        }
    }
    
    yourNumber = yourNumber.negative() 
    
    然后,您可以像这样对您的
    NSDecimalNumber
    求反:

    extension NSDecimalNumber {
        func negative() -> NSDecimalNumber {
            return self.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true));
        }
    }
    
    yourNumber = yourNumber.negative() 
    

    您还可以从零中减去它自己的值,并按如下方式返回:

    extension NSDecimalNumber {
        var negative: NSDecimalNumber { NSDecimalNumber.zero.subtracting(self) }
    }
    


    您可以重写
    -
    运算符。例如:

    prefix func -(number: NSDecimalNumber) -> NSDecimalNumber {
        return number.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true))
    }
    
    然后,您可以这样使用:

    let number = NSDecimalNumber(double: 5.00)
    let negativeNumber = -number
    

    检查这个问题:带尾数的小数在Swift中有效吗?在Xcode或Apple Swift文档中找不到它…您需要在Swift中像这样初始化-1
    NSDecimalNumber
    :NSDecimalNumber(尾数:1,指数:0,isNegative:true)才有意义!谢谢谢谢工作得很好!令人惊叹的!没有想过简单地修改-运算符!