我有一个浮点值,我想将其转换为无十进制数。 在这种情况下它应该是 120 然后我想将结果数字除以 8,再次将该数字舍入为没有十进制数字并将结果值存储在一个变量中,在这种情况下应该是 15。 在这种情况下,我的方法根据需要记录 15,但它仍然有其他值的小数 项目在打字稿中 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在尝试四舍五入以下公式,如果我取消注释应该四舍五入我的binet
变量的代码行之一,则程序错误。
返回值将被强制转换为 int,这将截断浮点数,但在这种情况下并不可取。
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
func fibFormula(_ n: Int) -> Int {
var binet = pow((pow(5, 0.5) + 1) / 2, Float(n)) / pow(5, 0.5)
// binet = round(binet)
// binet.round();
return Int(binet)
}
print(fibFormula(5)) // Should output 5
错误:
Stack dump:
0. Program arguments: /usr/bin/swift -frontend -interpret fib.swift -disable-objc-interop -color-diagnostics -module-name fib -- 5
/usr/bin/swift(+0x42e1b54)[0x55f476d0bb54]
/usr/bin/swift(+0x42df93e)[0x55f476d0993e]
/usr/bin/swift(+0x42e1d12)[0x55f476d0bd12]
/usr/lib/libpthread.so.0(+0x13d00)[0x7fdf098bfd00]
[0x7fdf099243fa]
[0x7fdf099241ea]
/usr/bin/swift(+0xd7f095)[0x55f4737a9095]
/usr/bin/swift(+0xd82fe0)[0x55f4737acfe0]
/usr/bin/swift(+0x607d13)[0x55f473031d13]
/usr/bin/swift(+0x5df088)[0x55f473009088]
/usr/bin/swift(+0x5da4c2)[0x55f4730044c2]
/usr/bin/swift(+0x58bea1)[0x55f472fb5ea1]
/usr/lib/libc.so.6(__libc_start_main+0xf3)[0x7fdf090f7ee3]
/usr/bin/swift(+0x58a2be)[0x55f472fb42be]
Segmentation fault (core dumped)
谁能帮我解决这个错误? 我对 swift 很陌生,我正在使用 Linux。
编辑:当我在沙箱中尝试我的代码时,它可以使用round
function。 也许这是一个Glibc
问题?
公式的更易读版本(也是不同的方法,相同的结果):
import Glibc
func fibFormula2(_ n: Int) -> Int {
let sqrt5 = sqrt(5)
let phi = (sqrt5 + 1) / 2
let binet = pow(phi, Double(n)) / sqrt5
return Int(round(binet))
}
print(fibFormula2(5)) // Should output 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.