请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
我尝试使用以下代码将Decimal转换为Int:
Int(pow(Decimal(size), 2) - 1)
Run Code Online (Sandbox Code Playgroud)
但我得到:
.swift:254:43: Cannot invoke initializer for type 'Int' with an argument list of type '(Decimal)'
Run Code Online (Sandbox Code Playgroud)
在这里我知道pow正在返回a Decimal但似乎Int没有构造函数和成员函数可以转换Decimal为Int.
如何在Swift 3中将Decimal转换为Int?
在我的swift程序中,我有一个非常长的十进制数字(比如说17.9384693864596069567),我想将小数截断为几个小数位(所以我希望输出为17.9384).我不希望数字四舍五入到17.9385.我怎样才能做到这一点?
感谢帮助!
注意:这不是重复的,因为在使用其中一些函数之前,它们使用的是旧版本的swift.此外,他们使用浮点数和整数,而我说的是双打.他们的问题/答案要复杂得多.
这是一个超级基本的问题,但是,我似乎无法在Swift中找到答案.
题:
如何获取Swift 2和Swift 3中数字的整数部分和小数部分(分别位于小数点的左侧和右侧)?例如,对于数字1234.56789 -
如何获得整数部分1234 .56789?
我如何获得小数部分1234. 56789?
我必须在用 Swift 编写的程序中选择两者之一,但我想我使用哪种编程语言并不重要。
我知道字符串格式化非常昂贵,并且怀疑它比将 Double 转换为 Int 更昂贵,但我什至不确定,最重要的是,到目前为止,我不明白为什么会出现这种情况。
另外,我在这里想做的是截断一个数字并将其打印到控制台,不带小数部分(这意味着我不希望它看起来像这样,0.0而是像这样0)。最有效的方法是什么?
有人可以启发我吗?
这是代码(第一行进行字符串格式化,第二行进行转换):
print(String(format: "%.0f", sender.value))
Int(sender.value)
Run Code Online (Sandbox Code Playgroud) swift ×4
ios ×2
math ×2
calculator ×1
casting ×1
decimal ×1
double ×1
optimization ×1
string ×1
swift3 ×1