在C89中,floor()返回一个double.以下保证是否有效?
double d = floor(3.0 + 0.5);
int x = (int) d;
assert(x == 3);
Run Code Online (Sandbox Code Playgroud)
我担心的是,在IEEE 754中,地板的结果可能并不完全可以表示.所以d得到类似2.99999,而x最终为2.
对于这个问题的答案是肯定的,int范围内的所有整数必须完全可以表示为双精度,而floor必须始终返回该精确表示的值.
我正在使用Metal外观编写Java Swing应用程序.每次我的应用程序中都有JButton时,用户使用Tab键将焦点移动到按钮,然后按Enter键.什么都没发生!如果他按下Space键,则会触发按钮事件.如何指定Enter键以触发与Space键相同的事件?谢谢您的帮助.
我几次遇到以下情况,我想知道是否有一种快速的方法来处理它在Vim.
我将有一个如下所示的源文件:
#ifndef _FOO_H_
#define _FOO_H_
class Foo {
Foo(int foo);
};
#endif
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下内容:
#ifndef _BAR_H_
#define _BAR_H_
class Bar {
Bar(int bar);
};
#endif
Run Code Online (Sandbox Code Playgroud)
所以,我想要所有的foo - > bar,但要保留原始的大写.现在,我一直在使用3或4个不同的正则表达式,但似乎应该有更好的方法.有任何想法吗?
为什么用Java,我可以写
List<?> list = new LinkedList<Double>();
Run Code Online (Sandbox Code Playgroud)
但不是
List<Container<?>> list = new LinkedList<Container<Double>>();
Run Code Online (Sandbox Code Playgroud)
容器就是这样的东西
public class Container<T> { ... }
Run Code Online (Sandbox Code Playgroud)
这是因为我有一个接受a的方法,List<Container<?>>
我想使用Arrays.asList将参数传递给它:
process(Arrays.asList(new Container<Double>(), new Container<Double>()));
Run Code Online (Sandbox Code Playgroud)
但是语言不允许这样做,因为它推断出的类型Arrays.asList
是List<Container<Double>>
,而且不能分配List<Container<?>>
.
如果我将一个String参数化的容器添加到调用中,
process(Arrays.asList(new Container<Double>(), new Container<String>()));
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用,因为它推断出List<Container<? extends Serializable & Comparable<?>>>
Arrays.asList 的类型.只有当我传入既不可比较也不可序列化的东西时,它才能正常工作.
当然,我可以放一个演员并让编译器关闭,但我想知道我在这里做错了什么.
我们的WinForms应用程序延迟加载数据以自动完成文本框.伪代码如下:
textBox.AutoCompleteCustomSource = fetchedAutoCompleteStringCollection;
我目前在#6遇到麻烦.作为一个黑客,我做以下工作来模拟一个有效的按键,但它并不适用于所有情况.
// This is a hack, but the only way that I have found to get the autocomplete
// to drop down once the data is returned.
textBox.SelectionStart = textBox.Text.Length;
textBox.SelectionLength = 0;
SendKeys.Send( " {BACKSPACE}" );
Run Code Online (Sandbox Code Playgroud)
肯定有更好的办法.我无法相信我是唯一一个异步获取自动完成数据的人.我该怎么做?
编辑: Win32调用导致自动完成下拉是可以接受的.如果必须,我不介意PInvoking.
我有一个使用 MS SQL Server 的应用程序,我需要从文件中进行批量插入。症结在于数据库和我的应用程序将托管在不同的服务器上。通过网络进行批量插入的最佳方法是什么?到目前为止我想出的两个想法:
从应用服务器,共享一个数据库服务器可以找到的目录,并使用远程文件中的批量插入语句进行导入
从 db 服务器运行 FTP 服务器 - 执行导入时,只需将文件 ftp 到 db 服务器并使用本地文件中的批量插入进行导入(我倾向于此选项)。
谁能告诉我是否有更好的方法来做到这一点,或者如果没有,哪一个最有意义,为什么?
我经常发现自己正在编写一个懒惰评估的属性.就像是:
if (backingField == null)
backingField = SomeOperation();
return backingField;
Run Code Online (Sandbox Code Playgroud)
代码不多,但如果你有很多属性,它会重复很多.
我正在考虑定义一个名为LazyProperty的类:
public class LazyProperty<T>
{
private readonly Func<T> getter;
public LazyProperty(Func<T> getter)
{
this.getter = getter;
}
private bool loaded = false;
private T propertyValue;
public T Value
{
get
{
if (!loaded)
{
propertyValue = getter();
loaded = true;
}
return propertyValue;
}
}
public static implicit operator T(LazyProperty<T> rhs)
{
return rhs.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
这将使我能够初始化这样的字段:
first = new LazyProperty<HeavyObject>(() => new HeavyObject { MyProperty = Value }); …
Run Code Online (Sandbox Code Playgroud) 给定一组Java源代码文件,如何将它们编译成一个或多个可以与手工制作的JavaScript一起使用的JavaScript文件?
GWT是一种选择,但到目前为止我见过的每个例子都是为了建立花哨的网站.将Java源代码转换为可与手工JavaScript一起使用的Javascript的简单用例尚未得到充分记录.
我在这个主题的GWT邮件列表上开始了一个帖子,但是对于这是否可行而言,看起来似乎有些混淆.
一个人提供了一个非常有用的提示,即检查GWT-Exporter.问题是源代码和文档都不是现成的,尽管有这个和这个.
编辑:GWT-Exporter源代码在这里
我也看过Java2Script.但同样,我无法找到如何解决我的简单用例的示例.
解决这个问题的最佳方法是什么?有什么比我更好的东西吗?
这更像是一个语法问题,我正在尝试编写一个可以嵌入到查询中的存储过程或函数,例如:
select * from MyBigProcOrFunction
Run Code Online (Sandbox Code Playgroud)
我正在尝试定义一个表格函数,但我不明白如何做到这一点,因为我构建tmp表来计算数据,然后我终于在endtable返回了.我的代码标记是:
create function FnGetCompanyIdWithCategories()
returns table
as
return
(
select * into a #tempTable from stuff
'
etc
'
select companyid,Company_MarketSector from #tempTables 'the returning table data
)
Run Code Online (Sandbox Code Playgroud)
如果我定义一个函数,我该如何将它作为表格返回?