Swift 斯威夫特:如何处理tableView中小数点后两位的双精度?

Swift 斯威夫特:如何处理tableView中小数点后两位的双精度?,swift,xcode,tableview,decimal,Swift,Xcode,Tableview,Decimal,我已经试着解决这个问题有一段时间了 数组中有一个double,但它总是显示为一个舍入整数 var数据数组:[(colorNo:String,color:NSColor,spares:Double)]=[] 以下是tableView: func numberOfRowsInTableView(aTableView: NSTableView) -> Int { return dataArray.count } } extension ViewControlle

我已经试着解决这个问题有一段时间了

数组中有一个double,但它总是显示为一个舍入整数

var数据数组:[(colorNo:String,color:NSColor,spares:Double)]=[]

以下是tableView:

    func numberOfRowsInTableView(aTableView: NSTableView) -> Int {
        return dataArray.count
    }
}

extension ViewController: NSTableViewDelegate {
    func tableView(tableView: NSTableView,
                   viewForTableColumn tableColumn: NSTableColumn?,
                   row: Int) -> NSView? {
        if let column = tableColumn {
            if let cellView = tableView.makeViewWithIdentifier(column.identifier, owner: self) as? NSTableCellView {
                let thread = dataArray[row]
                if column.identifier == "colourNo" {
                    cellView.textField?.stringValue = "\(thread.colourNo)"
                    return cellView
                }
                if column.identifier == "colour" {
                    cellView.textField?.backgroundColor = thread.colour
                    return cellView
                }
                if column.identifier == "spares" {
                    let val = Double(thread.spare)
                    cellView.textField?.doubleValue = val
                    return cellView
                }
                return cellView
            }
        }
        return nil
    }
}
下面是Xcode中字段的定义:

每当我输入一个十进制值

它总是还原为整数:

我肯定这对外面的人来说是显而易见的,但恐怕对我来说不是


有什么想法吗?

这与您显示的任何代码无关。-你的手机上有一个数字格式。输入到字段中的字符串被解释为Double的方式,以及Double值在界面中显示为字符串的方式,取决于格式化程序的配置。将其配置为在小数点后显示内容,这就是它将执行的操作。

这与您显示的任何代码无关。-你的手机上有一个数字格式。输入到字段中的字符串被解释为Double的方式,以及Double值在界面中显示为字符串的方式,取决于格式化程序的配置。将其配置为在小数点后显示内容,这就是它将要做的。

让val=Double(thread.spare)中的
thread.spare
从何而来?在表视图代码中有
spare
,但元组中有
spares
,我假设这是一个输入错误?为什么要从单元格中的双精度点创建新的双精度点?数字格式化程序是如何设置的?“备用”是列标识符,而不是元组中的字段。数字格式设置器的样式为:十进制、最小值为0、最大值为99.99、Localize Format和Lenient均已选中。正如下面提到的,在代码中,我也尝试过。使用GroupingSeparator、.minimumFractionDigits=0、.maximumFractionDigits=2、.locale=NSLocale.currentLocale(),但这一切似乎都不会对输出产生任何影响。在
中的
thread.spare
在哪里让val=Double(thread.spare)
来自?您在表视图code中有
备件
,但元组中有
备件
,我认为这是一个打字错误?为什么要从单元格中的双精度点创建新的双精度点?数字格式化程序是如何设置的?“备用”是列标识符,而不是元组中的字段。数字格式设置器的样式为:十进制、最小值为0、最大值为99.99、Localize Format和Lenient均已选中。正如下面提到的,在代码中,我也尝试了.usesGroupingSeparator、.minimumFractionDigits=0、.maximumFractionDigits=2、.locale=NSLocale.currentLocale(),但这一切似乎都不会对输出产生任何影响。我尝试过,但不管我如何配置它,它似乎仍然显示整数。在Attributes Inspector中的数字格式化程序中,我将样式设置为Decimal,它仍然显示作为示例输入输入的整数。我也尝试过使用.usesGroupingSeparator、.minimumFractionDigits=0、.maximumFractionDigits=2、.locale=NSLocale.currentLocale(),但所有这些似乎都不会对输出产生任何影响。最终得到了它-谢谢matt。将Attributes Inspector中的数字格式化程序行为从默认更改为自定义,并打开了附加配置选项的加载!我试过了,但不管我如何配置它,它似乎仍然显示整数。在Attributes Inspector中的数字格式化程序中,我将样式设置为Decimal,它仍然显示作为示例输入输入的整数。我也尝试过使用.usesGroupingSeparator、.minimumFractionDigits=0、.maximumFractionDigits=2、.locale=NSLocale.currentLocale(),但所有这些似乎都不会对输出产生任何影响。最终得到了它-谢谢matt。将Attributes Inspector中的数字格式化程序行为从默认更改为自定义,并打开了附加配置选项的加载!