如何在NSPoint中获取整数值以整数而不是十进制显示

时间:2019-06-01 17:07:36

标签: swift

如何在NSPoint中获取整数值以整数而不是十进制显示?

let temp:NSPoint = NSMakePoint(5,7)

print(temp.x) . // displays 5.0

我只希望它显示5,而不是5.0

2 个答案:

答案 0 :(得分:0)

您可以将CGPoint值转换为Int。

let point: NSPoint = NSMakePoint(5,7)
let x = Int(point.x)
let y = Int(point.y)
print(point.x)       // displays 5.0
print(x)             // displays 5
print(y)             // displays 7

答案 1 :(得分:0)

您问:

  

如何在NSPoint中获取整数值以整数而不是十进制显示。

该问题可能基于错误的前提。您提供给NSMakePoint(_:_:)的参数实际上是CGFloat(基础属性xy也是如此)。因此,您提供了整数,但是Swift将CGFloatx分别存储为y

因此,我认为真正的问题是“如何显示CGFloatNSPoint的别名)的CGPoint属性,而没有任何小数位数(即,小数点后跟0)。”

现在,当然,正如其他人所建议的那样,您可以使用CGFloat等来从Int(point.x)属性中创建一个整数,但是我可能建议您确实希望只显示这些{{ 1}},不带小数位。有很多方法可以做到这一点。

考虑:

CGFloat

您也可以使用let point = NSPoint(x: 5000, y: 7000) ,但这在Swift中更为自然。

无论如何,在macOS中,NSStringFromPoint将生成不带小数位的完整NSMakePoint

CGPoint

您可以使用String(format:_:)

print(NSStringFromPoint(point))             // "{5000, 7000}"

您可以使用NumberFormatter

print(String(format: "%.0f", point.x))      // "5000"

不用说,您可以保存该格式化程序,并且可以根据需要重复使用它,以防止代码过于冗长。

或者,如果您仅将此登录到控制台,则可以将Unified Logginglet formatter = NumberFormatter() formatter.minimumFractionDigits = 0 formatter.numberStyle = .decimal print(formatter.string(for: point.x)!) // "5,000" 一起使用,然后执行以下操作:

import os.log