- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 XCode 5 的调试 session 期间,我将如何显示 NSDecimal var 的实际值?我找到了 this question但这对我不起作用。输入类似 {(int)[$VAR intValue]}
的摘要描述只会导致消息“Summary Unavailable”。我应该补充一点,我的 NSDecimals 在一个数组中 (NSDecimal dataPoint[2];
)。
使用调试控制台通过上下文菜单或使用 p dataPoint[0]
打印 var 描述只是给我原始的 NSDecimal View :
Printing description of dataPoint[0]:
(NSDecimal) [0] = {
_exponent = -1
_length = 1
_isNegative = 0
_isCompact = 1
_reserved = 0
_mantissa = {
[0] = 85
[1] = 0
[2] = 42703
[3] = 65236
[4] = 65534
[5] = 65535
[6] = 23752
[7] = 29855
}
}
最佳答案
在 Xcode 10.0 中,有一个 lldb 错误,如果 Decimal
则此答案会打印出错误的值。是 Dictionary<String: Decimal>
中的一个值(可能在其他情况下)。参见 this question and answer和 Swift bug report SR-8989 .该错误已由 Xcode 11(可能更早)修复。
您可以添加 lldb 对格式化的支持 NSDecimal
(并且,在 Swift 中, Foundation.Decimal
)通过安装 Python 代码来转换 NSDecimal
的原始位到人类可读的字符串。这称为类型摘要脚本,记录在 this page of the lldb documentation 上的“PYTHON SCRIPTING”下。 .
使用类型摘要脚本的一个优点是它不涉及在目标进程中运行代码,这对于某些目标可能很重要。
另一个优点是,Xcode 调试器的变量 View 似乎在使用类型摘要脚本时比使用摘要格式更可靠,如 hypercrypt's answer 中所示。 .我在摘要格式方面遇到了麻烦,但类型摘要脚本工作可靠。
没有类型摘要脚本(或其他定制),Xcode 显示 NSDecimal
(或 Swift Decimal
)像这样:
对于类型摘要脚本,Xcode 显示如下:
设置类型摘要脚本包括两个步骤:
将脚本(如下所示)保存在某个文件中。我保存在~/.../lldb/Decimal.py
.
添加命令到~/.lldbinit
加载脚本。该命令应如下所示:
command script import ~/.../lldb/Decimal.py
将路径更改为您存储脚本的位置。
这是脚本。我也保存在this gist里面了.
# Decimal / NSDecimal support for lldb
#
# Put this file somewhere, e.g. ~/.../lldb/Decimal.py
# Then add this line to ~/.lldbinit:
# command script import ~/.../lldb/Decimal.py
import lldb
def stringForDecimal(sbValue, internal_dict):
from decimal import Decimal, getcontext
sbData = sbValue.GetData()
if not sbData.IsValid():
raise Exception('unable to get data: ' + sbError.GetCString())
if sbData.GetByteSize() != 20:
raise Exception('expected data to be 20 bytes but found ' + repr(sbData.GetByteSize()))
sbError = lldb.SBError()
exponent = sbData.GetSignedInt8(sbError, 0)
if sbError.Fail():
raise Exception('unable to read exponent byte: ' + sbError.GetCString())
flags = sbData.GetUnsignedInt8(sbError, 1)
if sbError.Fail():
raise Exception('unable to read flags byte: ' + sbError.GetCString())
length = flags & 0xf
isNegative = (flags & 0x10) != 0
if length == 0 and isNegative:
return 'NaN'
if length == 0:
return '0'
getcontext().prec = 200
value = Decimal(0)
scale = Decimal(1)
for i in range(length):
digit = sbData.GetUnsignedInt16(sbError, 4 + 2 * i)
if sbError.Fail():
raise Exception('unable to read memory: ' + sbError.GetCString())
value += scale * Decimal(digit)
scale *= 65536
value = value.scaleb(exponent)
if isNegative:
value = -value
return str(value)
def __lldb_init_module(debugger, internal_dict):
print('registering Decimal type summaries')
debugger.HandleCommand('type summary add Foundation.Decimal -F "' + __name__ + '.stringForDecimal"')
debugger.HandleCommand('type summary add NSDecimal -F "' + __name__ + '.stringForDecimal"')
关于objective-c - 在 XCode 调试器中显示 NSDecimal 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19333589/
我正在设置一些全局参数,这些参数最终会插入到我的 sqlite 数据库中。其中一个文本字段应该只包含小数,但我在尝试将 NSDecimal 变量设置为文本字段值时遇到问题。 global_Raw_Va
我有一个 NSDecimal 在一个紧密的计算循环中,我需要对值进行取整。我想防止为此创建胖 NSDecimalNumber 对象。有没有一种经济有效的方法来获得发言权?该下限只需要计算另一个值可以容
例如,我有一个 NSDecimal myDecimal。假设它代表类似“-1234567.89”的内容 如何在不进行任何美化/格式化的情况下获得该小数的干净字符串表示形式?没有本地化吗?浮点符号 =
我正在尝试执行基本的 NSDecimal 数学,例如 NSDecimal 的加法、乘法和减法。这有可能实现吗?尝试使用 NSDecimalAdd出现错误 NSDecimal' 到不兼容类型“NSDec
我目前正在尝试将两个 NSDecimal 数字相乘,这在 Swift 中可行吗? 我在 Apple Dev 页面上找到了“decimalNumberByMultiplyingBy”方法,但我按如下方式
得到了一个高精度的大NSDecimal。像这样: NSString *decStr = @"999999999999.999999999999"; NSDecimal dec; NSScanner *
将 NSDecimal 设置为零有哪些不同的方法?我对目前发现的 3 个中的任何一个都不感兴趣。 NSDecimal zero = {0}; // Not obvious what's going o
我遇到过一些博客和论坛帖子,人们说在处理货币时应该使用 NSDecimalNumber 而不是 float 。我发现我必须从 NSDecimalNumber 转换为 Floats/Doubles 才能
有人帮忙,我试了整个下午都找不到方法。 最佳答案 NSDecimal 是一种具有私有(private)成员的 C 结构体,您通常会从 Objective-C 类 NSDecimalNumber (de
我正在寻找一种有效的方法来将 NSDecimalNumber 与 NSData 缓冲区中的其他数据一起保存。 我还没有找到直接从 NSDecimalNumber 执行此操作的方法。但是,很容易将其转换
我正在使用 CorePlot 库来创建一些图表。在处理它时,我发现需要更改 X 轴属性 Xaxis.MajorIntervalLength,这是一个 NSDecimal。 我试过了,但我无法创建一个
我已经阅读了很多有关 NSDecimal、NSNumber、NSNumberDecimal、CFNumber 的内容……对我来说它开始成为一种丛林。 基本上,我正在尝试创建一个简单的模型类来处理简单的
我正在使用 NSDecimal 进行大量计算,并使用以下技术创建每个 NSDecimal 结构: [[NSNumber numberWithFloat:kFloatConstant] decimalV
我遇到一种情况,我得到一个 NSDecimal,并且我需要一个 NSInteger。我确实知道这是一个非常小的值(这是绝对肯定的)。它不会大于 100。因此将其转换为 NSInteger 就完全没问题
文档对此感到困惑。他们说: void NSDecimalCompact ( NSDecimal *number ); Discussion Formats number so that calc
我有一个 NSDecimal 并需要它作为技术字符串,即没有任何格式。 float 应该是“.”如果有的话,减号应该只是一个“-”(如果有的话)。除此之外,不应该有像分组或中文数字这样的格式。 我在
我有一个对象数组,每个对象都有一个 NSDecimalNumber,称它为“大小” 对于数组中的每个对象,我将减去一个建议的大小,称为 rSize。 然后我想进入结果 NSDecimalNumber
我有一个 coreplot 项 y.majorIntervalLength,我认为它是 NSDecimal 类型。我需要用我从几个 double 中计算出的值来填充它。问题是当我将结果 double
我正在发送一些数据和 UIImage(将 UIImage 转换为 NSData)发送到服务器,我的客户端正在返回我们发送的响应。 但是,这里我的客户给出了如下格式的 UIImage FaceImage
如何使用自定义格式显示 NSDecimal?类似“%.2f”或“%.4f”的内容。 NSDecimalString 只是丢掉零(例如 4.10 变成 4.1)。 最佳答案 [NSString stri
我是一名优秀的程序员,十分优秀!