【问题标题】:Does long keep Leading zeros SQLITE Insert是否长期保留前导零 SQLITE 插入
【发布时间】:2017-04-20 22:56:43
【问题描述】:

简单的问题只是为了确认。 一个方法返回一个 Long,该 long 可能由前导零组成。这有什么规定。当它被传回时,零是被抹去还是留下来。

啊,我意识到这变得更复杂了 我目前正在使用此方法向数据库添加值,它返回一个 LONG。 Android SQLiteDatabase.Insert

所以我想知道它是否返回带有前导零的东西是什么阻止它被砍掉?

【问题讨论】:

  • 嗯?没有前导零。如果您正在编写 long a = 00000123;,您只需指定八进制中的 long(它与编写 long a = 83; 相同)。
  • 它们没有被“抹去”,它们从未存在过。
  • 为了添加不同的视角,long 和其他 int 在内部是固定宽度的——long 内部是 64 位。所以是的,如果数字少于 63 位来表示它,那么总会有前导零。 (63 因为一位用于符号。)
  • 请看看我的原始编辑问题

标签: java android sqlite variables numbers


【解决方案1】:

没有整数类型(或浮点类型)保留前导零。在二进制中,没有 000 的概念(在数学意义上也没有)。

System.out.println(Long.toBinaryString(Long.parseLong("001")));
System.out.println(Long.toBinaryString(Long.parseLong("1")));

只会为两者显示1

【讨论】:

  • 好吧,我想这是因为我有一些东西返回一个零“0”,我不确定。
  • AHHH 这是我感到困惑的地方developer.android.com/reference/android/database/sqlite/…, java.lang.String, android.content.ContentValues)
  • @GideonSassoon 返回long the row ID of the newly inserted row, or -1 if an error occurred。这让您感到困惑吗?
  • Frisch,如果行 ID 中有一个前导 0 怎么办?这个担心是我们从这里从 0 开始计数的。所以返回的第一个值是 0。
  • 不一定,但没有长的“前导零”。更准确地说,几乎总是有 - 但语言不会显示它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2011-10-01
  • 2020-06-11
  • 2011-10-07
  • 2014-09-01
  • 2010-10-14
  • 2017-04-03
相关资源
最近更新 更多