如何在NSPoint中获取整数值以整数而不是十进制显示?
let temp:NSPoint = NSMakePoint(5,7)
print(temp.x) . // displays 5.0
我只希望它显示5,而不是5.0
答案 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
(基础属性x
和y
也是如此)。因此,您提供了整数,但是Swift将CGFloat
和x
分别存储为y
。
因此,我认为真正的问题是“如何显示CGFloat
(NSPoint
的别名)的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 Logging与let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.numberStyle = .decimal
print(formatter.string(for: point.x)!) // "5,000"
一起使用,然后执行以下操作:
import os.log