繁体   English   中英

swift 中的舍入值导致分段错误

Rounding value in swift results into a segmentation fault

提示:本站收集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
问题暂未有回复.您可以查看右边的相关问题.
1 如何舍入和分割浮动值

我有一个浮点值,我想将其转换为无十进制数。 在这种情况下它应该是 120 然后我想将结果数字除以 8,再次将该数字舍入为没有十进制数字并将结果值存储在一个变量中,在这种情况下应该是 15。 在这种情况下,我的方法根据需要记录 15,但它仍然有其他值的小数 项目在打字稿中 ...

2 舍入错误SQL Server值

您好,我在针对SQL Server的查询中遇到问题,我的问题是在列调用TotaleCap,我的问题是TotaleCap应该是Quantitàfor CostoUnitario的结果,但账单没有回来,您能帮我吗? 谢谢 查询: 输出画面 ...

3 四舍五入会产生错误

我有一个 dataframe: 东风 我想在 dataframe individual_count 中生成另一列,该列将使用 b_count 的值创建,即 148,这样 60% 的计数位于过去 10 天,rest 40% 在剩余的几天内。 例如 - 这里 date_1 重复 30 次,将 148 分 ...

4 argv中更改char值导致分割错误

我正在尝试将字符串转换为其字母数字值,并且每次尝试显示argv [1]时都会遇到分段错误(核心转储)错误。 我环顾四周,很多答案都说它是由0除/取模而来的,但我根本不这样做。 我已经评论和未评论的东西,我看到没有else语句,它就可以正常工作。 如果程序适用于if语句,为什么应该为e ...

7 由于字符变化导致的分割错误

我正在写一个棋盘游戏的详细信息 。 我只是将问题problem_ch从' ' (空格)更改为' '获得分段错误'.' 。 当我按步棋并以' '进行比赛时,我不知道,但当我按步棋并以'.'比赛时'.' 知道了 我真的非常不了解发生了什么。 解决:由于索引为负,我得到了细分错误。 ...

8 绘图精灵导致分割错误

我正在使用基于等距图块的SFML2编写一个简单的游戏。 地图中的每个图块均由Tile类表示。 该类包含sf :: Sprite对象和draw()函数,用于在屏幕上绘制精灵。 问题在于,调用window.draw()会导致分段错误。 我读到它通常是由关联的sf :: Texture指针无效 ...

9 由于比较功能导致的分割错误

我尝试解决spoj的问题。 http://www.spoj.com/problems/BUSYMAN/ 尽管我能够解决它,但我遇到了一个非常奇怪的错误。 我试图了解其原因,但是失败了。 我有两个代码。 ////////////////////////////////////// ...

10 与数组匹配导致分割错误

从这段代码, 我必须找到 node[0]和node[1]具有来自neighbor[0-3]任何公共值 或node[1]和node[2]具有来自neighbor[0-3]任何公共值 或node[2]和节点[3]具有来自neighbor[0-3]任何公共值 ...

2012-12-25 15:15:15 3 84   c/ arrays
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM