因此,我试图了解更多关于浮点数的IEEE 754标准中定义的非规范化数字.由于Google搜索结果,我已经阅读了几篇文章,并且我已经阅读了几篇StackOverFlow帖子.但是我还有一些问题没有答案.
首先,回顾一下我对Denormalized float的理解:
具有较少精度位的数字,并且比标准化数字更小(数量级)
实质上,非规范化浮点数能够表示可以用任何浮点值表示的SMALLEST(幅度)数.
这听起来不对吗?还有什么呢?
我读过:
使用非规范化数字会在许多平台上带来性能成本
对此有何评论?
我也读过其中一篇文章
一个应该"避免规范化和非规范化数字之间的重叠"
对此有何评论?
在IEEE标准的一些演示中,当呈现浮点范围时,排除非规格化值并将表标记为"有效范围",几乎就像演示者正在思考"我们知道非规范化数字CAN表示可能的最小浮动点值,但由于非规范化数字的某些缺点,我们选择将它们从更适合常见使用场景的范围中排除" - 好像非常规化数字不常用.
我想我一直认为在大多数情况下使用非规范化数字并不是一件好事?
如果我必须自己回答这个问题,我会想:
使用非规格化数字是好的,因为您可以表示可能的最小(数量级)数字 - 只要精度不重要,并且您不将它们与标准化数字混合,并且应用程序的最终性能符合要求.
使用非规范化数字是一件坏事,因为大多数应用程序不需要如此小的表示 - 精确损失是有害的,并且你可以通过将它们与标准化数字混合来轻松地射击自己,并且性能不值得花费在多数情况下.
对这两个答案有何评论?还有哪些我可能会丢失或不理解非规范化数字?
在Apple iPhone Clock App中,当用户添加新警报时,会弹出模态视图.我正在尝试创建一个类似的UI.
我目前有一个UITableViewController作为UINavigationController的根视图控制器.
我还将UIDatePicker添加为UINavigationController的子视图:
[self.navigationController.view addSubview:mydatePicker];
Run Code Online (Sandbox Code Playgroud)
但是,我的UITableview(UITableViewController)中有大约10行,并且只要我添加了UIDatePicker,就无法滚动查看所有单元格.
我意识到UITableView的大小和我添加UIDatePicker之前的大小相同,因此我需要更改它的大小才能滚动查看所有表格单元格.
为了改变它的大小,我尝试了几件事,但都无济于事.在下面的代码中,我任意为新高度选择了50.
首先,尝试更改边界高度:
CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(bounds.origin.x,
bounds.origin.y,
bounds.size.width,
50)];
Run Code Online (Sandbox Code Playgroud)
然后尝试更改框架高度:
CGRect tvframe = [self.tableView frame];
[self.tableView setFrame:CGRectMake(tvframe.origin.x,
tvframe.origin.y,
tvframe.size.width,
50)];
Run Code Online (Sandbox Code Playgroud)
然后谷歌搜索后,我尝试更改contentSize高度:
CGSize thesize = self.tableView.contentSize;
thesize.height = 50;
self.tableView.contentSize = thesize;
Run Code Online (Sandbox Code Playgroud)
这些似乎都没有对UITableView的大小产生任何影响.我仍然无法滚动查看所有单元格.
我后来尝试了一些与上面相同的方法,但是在UINavigationController而不是UITableView上.我也没有太多运气.
作为最后的手段,我试图在Storyboard编辑器中更改UITableView的大小.我也想不出来.
感谢您的任何帮助,您可以提供.
更新:
感谢来自"Evgeny S"的信息,我已经能够确定覆盖删除按钮的是细胞背景.我在单元初始化时调用了以下函数:
- (void) setupGradientsWithHeight:(int) the_height
{
CAGradientLayer* gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(self.bounds.origin.x,
self.bounds.origin.y,
self.bounds.size.width,
the_height);
gradient.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithRed:218.0f/255.0f
green:218.0f/255.0f
blue:220.0f/255.0f
alpha:1.0].CGColor,
(id)[UIColor colorWithRed:180.0f/255.0f
green:180.0f/255.0f
blue:184.0f/255.0f
alpha:1.0].CGColor,nil];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
[bgview.layer addSublayer:gradient];
[self setBackgroundView:bgview];
}
Run Code Online (Sandbox Code Playgroud)
通过不添加backgroundview解决了这个问题.但是,我想知道如何在保留每个细胞的梯度背景的同时解决它?
可能会发生两件事之一.当删除按钮出现时,背景视图要么被移动然后又被移回 - 或者它的大小正在减小然后再返回.我尝试使用渐变框架的宽度组件"self.bounds.size.width",但我仍然没有看到它如何影响事物,因为此函数仅在单元初始化时调用一次.
原始邮寄:
我在iOS6 SDK下在Xcode4中创建了一个应用程序 - 但是在新环境(Xcode5和iOS7 SDK)中加载后我遇到了问题.请注意,我已经解决了进行转换时出现的所有构建错误和警告.
我有一些细胞的桌面视图.进入编辑模式后,如果单击红色切换按钮以启动单元格的删除模式 - 动画开始并显示"删除"按钮 - 但只是短暂地然后突然重新隐藏.
我应该注意的另一个奇怪的事情是,即使删除按钮被覆盖 - 你仍然可以点击它应该的位置并删除单元格.
我试图尽可能多地取出我的"自定义代码",我已经删除了我已经覆盖的功能,并试图将事情恢复到原始状态 - 但无济于事.
有一次,我在输出日志中看到一条奇怪的消息:"当我们已经有一个看起来不太好的时候,试图设置滑动以删除单元格." 出于某种原因,消息显示的时间更长,我似乎无法记住我当时正在做的事情.
有关可能导致此问题的任何想法或建议?
在 iOS7 SDK 中加载我的应用程序。我的表视图的索引列表现在已压缩:
我似乎无法追踪可能发生的事情。我没有在任何地方设置尺寸或长度。下面是我分配标题的代码,但我猜问题一定出在其他地方?
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *titleArray = [[NSMutableArray alloc] init];
if (BookHasSections())
{
NSInteger sections = tableView.numberOfSections;
for (int section = 0; section < sections; section++)
{
switch (section)
{
case 0:
[titleArray addObject:@"1"];
break;
default:
[titleArray addObject:[NSString stringWithFormat:@"%d0",section]];
break;
}
}
}
return titleArray;
}
Run Code Online (Sandbox Code Playgroud) 当我发布子模块更新并包含“ --no-fetch”时,如下所示:
git submodule update --remote --no-fetch
Run Code Online (Sandbox Code Playgroud)
该文档指出:
为了确保当前跟踪分支状态,在计算SHA-1之前,update --remote将获取子模块的远程存储库。如果您不想获取,则应使用子模块更新--remote --no-fetch。
我对“ --no-fetch”部分有些困惑。如果我在没有更新的情况下致电更新:
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
我知道将不会执行提取-但这也意味着我不能保证“ 当前跟踪分支状态 ”吗?这到底是什么意思呢?
在哪种情况下,我不希望保证当前的跟踪分支状态?
我有一个类似的问题: 当前的工作目录是visual studio目录
除了我在Visual Studio中使用C++项目.有什么建议?
例如,如果我在以下帖子中尝试解决方案: GetCurrentDirectory for startup App.C++
我明白了:
"C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE"
Run Code Online (Sandbox Code Playgroud)
但我希望它是我的项目/解决方案文件夹下的Debug文件夹.
更新3:
这个页面向我展示了如何在三行中完成它.任何人都知道如何在一条线上完成它?
for (int i = 0; i < 5; i++) {
my_value_to_verify = get_my_values(i);
wchar_t message[200]; // Line 1
_swprintf(message, L"Value %d failed", i); // Line 2
Assert::AreEqual(42, my_value_to_verify, message); // Line 3
}
Run Code Online (Sandbox Code Playgroud)
更新2
正如@JaredPar所指出的那样,我所指的文档实际上是用于C++/CLI.在进行额外搜索之后,看起来以下链接包含对我正在使用的函数的引用.
更新1
从{i}中删除括号也会导致编译错误:
Error: no instance of overloaded function ...AreEqual matches the argument list (int, int, const wchar_t[16], int)
Run Code Online (Sandbox Code Playgroud)
原帖
使用Microsoft文档我正在尝试构造一个将打印格式化消息的Assert语句.例如:
for (int i = 0; i < 5; i++) {
my_value_to_verify = get_my_values(i);
Assert::AreEqual(42, my_value_to_verify, L"Value %d failed", …Run Code Online (Sandbox Code Playgroud) 我在带有busybox的嵌入式Linux环境中。我已经通读了几篇 文章,试图学习如何使用switch_root。我尝试了这个:
exec switch_root -c /dev/console /mnt/newroot /bin/busybox init
Run Code Online (Sandbox Code Playgroud)
在switch_root帮助打印,我提出了一个新的登录:
[root@buildroot ~]# exec switch_root -c /dev/console /mnt/newroot /bin/busybox init
BusyBox v1.21.0 (2015-04-24 18:14:40 MDT) multi-call binary.
busybox init
Usage: switch_root [-c /dev/console] NEW_ROOT NEW_INIT [ARGS]root /bin/busybox in
Free initramfs and switch to another root fs:
chroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,
execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.
-c DEV Reopen stdio to DEV after …Run Code Online (Sandbox Code Playgroud) 通过这个问题,我已经了解到,为了通过NSTextAlignmentCenter在UILabel中居中对齐文本,我必须禁用"字母收紧间距",这家伙同意.
他们提到在界面构建器中禁用此选项,但据我所知,我的uilabel在IB中无法访问.这是因为我试图在uitableview中更改单元格的"textLabel".我继续尝试在代码中尝试禁用内容:
cell.textLabel.numberOfLines = 1;
cell.textLabel.adjustsFontSizeToFitWidth = NO;
cell.textLabel.adjustsLetterSpacingToFitWidth = NO;
cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.textLabel.text = @"My Centered Text";
Run Code Online (Sandbox Code Playgroud)
但是,这些似乎都没有任何效果.文本仍然保持对齐.
在这个实施例的用户的路由是通过使用所获得的命令行实用程序的IP中的Linux。输出示例:
$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0 src 192.168.0.121
cache
$
Run Code Online (Sandbox Code Playgroud)
让我们以以下方式引用地址:
4.2.2.1作为地址A(目的地)192.168.0.1作为地址B(网关)192.168.0.121作为地址C(来源)就我而言,我感兴趣C-并且我试图弄清楚我如何能够在我的c ++程序中获得相同的信息。特别
有什么建议吗?谢谢