问题列表 - 第44078页

双面打印而不失精度

如何在流中打印双精度数,以便在读入时不会丢失精度?

我试过了:

std::stringstream ss;

double v = 0.1 * 0.1;
ss << std::setprecision(std::numeric_limits<T>::digits10) << v << " ";

double u;
ss >> u;
std::cout << "precision " << ((u == v) ? "retained" : "lost") << std::endl;
Run Code Online (Sandbox Code Playgroud)

这不像我预期的那样有效.

但我可以提高精度(这让我感到惊讶,因为我认为数字10是所需的最大值).

ss << std::setprecision(std::numeric_limits<T>::digits10 + 2) << v << " ";
                                                 //    ^^^^^^ +2
Run Code Online (Sandbox Code Playgroud)

它与有效位数有关,前两位不计入(0.01).

那么有人看过准确表示浮点数吗?我需要做的流上究竟是什么神奇的咒语?

经过一些实验:

问题在于我的原始版本.小数点后面的字符串中有无效数字会影响精度.

因此,为了弥补这一点,我们可以使用科学记数法来补偿:

ss << std::scientific
   << std::setprecision(std::numeric_limits<double>::digits10 + 1)
   << v;
Run Code Online (Sandbox Code Playgroud)

这仍然不能解释+1的必要性.

此外,如果我以更高的精度打印出数字,我会得到更高的精度!

std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10) << v << "\n";
std::cout << std::scientific …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point iostream

32
推荐指数
5
解决办法
2万
查看次数

找到配对订单的有效方法?

比方说,我有三个阵列a,bc等长的N.每个数组的元素都来自一个完全有序的集合,但没有排序.我还有两个索引变量,ij.对于所有人i != j,我想计算索引对的数量a[i] < a[j],b[i] > b[j]以及c[i] < c[j].有没有办法可以在低于O(N ^ 2)的时间复杂度下完成,例如通过创造性地使用排序算法?

注意:这个问题的灵感来源于,如果你只有两个数组,a并且b你可以找到索引对的数量,a[i] < a[j]并且b[i] > b[j] 在O(N log N)中使用合并排序.我基本上正在寻找三个数组的推广.

为简单起见,您可以假设任何数组中没有两个元素相等(无关系).

theory sorting algorithm math statistics

11
推荐指数
1
解决办法
276
查看次数

使用ncurses调整终端和滚动问题的大小

我使用ncurses库在C编程(这是第一次),我有两个问题.我在ubuntu上使用默认终端(gnome终端).

1)我需要调整终端的大小.我使用了resizeter()和resize_term(),但是它们都失败了.

2)我使用scrollok()函数,问题是我丢失了滚动的行(当我回到wscrl()时,有空白行).

#include <ncurses.h>

int main() {

WINDOW *win, *win2;

int i;
char c;

initscr();
cbreak();
noecho();

win=newwin(8,20,1,1);
box(win,0,0);
win2=newwin(6,18,2,2);
scrollok(win2,1);
wrefresh(win);
wrefresh(win);

for(i=0;i<15;i++){
    c=wgetch(win2);
    if(c=='u'){
        wscrl(win2,-1);
        wrefresh(win2);
    }
    else{
        wprintw(win2,"%c\n",c);
        wrefresh(win2);
    }
}

delwin(win);
delwin(win2);
endwin();

return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux ncurses

6
推荐指数
2
解决办法
9977
查看次数

c ++中的自动指针

我很想知道如何在c ++中实现auto_ptr.我试图找出它的来源在ubuntu 10.04中的位置.我只能找到.h文件但找不到它的实现.我在哪里可以找到它?

c++

4
推荐指数
1
解决办法
1012
查看次数

如何确定ParameterInfo是否是泛型类型?

我有MethodInfo一个GenericMethodDefinition.如:CallMethod<T>(T arg, string arg2).GetParameters()方法将为我提供两个ParameterInfo对象,第一个是通用的,第二个不是.如何让ParameterInfo告诉我它是通用的?如果它有约束怎么办?

c# generics reflection methodinfo parameterinfo

7
推荐指数
1
解决办法
1507
查看次数

java正则表达式找不到最长匹配

为什么java(使用Matcher.find())找不到最长的匹配?

regex = "ab*(bc)?"
Run Code Online (Sandbox Code Playgroud)

输入"abbbc"时,正则表达式找到"abbb",而不是"abbbc",它也匹配并且更长.有没有办法强制它匹配最长的字符串?

java regex

2
推荐指数
1
解决办法
3313
查看次数

如何在Java中创建类型变量数组?

在Java中,可以声明一个类型变量数组,但我无法创建数组.这不可能吗?

class ClassName<T> {
    {
        T[] localVar; // OK
        localVar = new T[3]; // Error: Cannot create a generic array of T
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays generics

4
推荐指数
1
解决办法
5403
查看次数

PHP中的关联数组的插值(双引号字符串)

在插入PHP的字符串索引数组元素(5.3.3,Win32)时,可能会出现以下行为:

$ha = array('key1' => 'Hello to me');

print $ha['key1'];   # correct (usual way)
print $ha[key1];     # Warning, works (use of undefined constant)

print "He said {$ha['key1']}"; # correct (usual way)
print "He said {$ha[key1]}";   # Warning, works (use of undefined constant)

print "He said $ha['key1']";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[ key1 ]";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[key1]";     # !! correct (How Comes?)
Run Code Online (Sandbox Code Playgroud)

无意中,最后一行似乎是正确的PHP代码.有什么解释吗?这个功能可以信任吗?


编辑:现在以粗体显示的发布点,以减少误解.

php associative-array

44
推荐指数
3
解决办法
3万
查看次数

Java - Decimal Format.parse返回具有指定小数位数的double值

我希望能够在格式字符串中给出一些小数位,将字符串转换为Double.所以"###,## 0.000"应该给我一个Double到3的小数位.

编辑 - 为发生的事情添加了更多信息

用户在UI中输入值 - 输入到String中.规则是此值限制为3位小数.底层代码将值存储在数据库中,然后在计算中使用.因此,尾随小数位将导致计算略微超出预期.

我有以下代码:

try {
        // output current locale we are running under (this happens to be "nl_BE")
        System.out.println( "Current Locale is " + Locale.getDefault().toString() );

        // number in Central European Format with a format string specified in UK format
        String numberCE = "1,234567"; // 1.234567
        String formatUK = "###,##0.000";

        // do the format
        DecimalFormat formatterUK = new DecimalFormat( formatUK );
        Double valCEWithUKFormat = formatterUK.parse( numberCE ).doubleValue();

        // I want …
Run Code Online (Sandbox Code Playgroud)

java parsing decimal rounding decimalformat

12
推荐指数
2
解决办法
6万
查看次数

与Capybara和Rails保持会谈3

我有两个水豚测试,第一个测试用户,第二个用于测试仅供登录用户使用的功能.

但是,我无法让第二个测试工作,因为会话不是跨测试维护的(显然,它应该是).

require 'integration_test_helper'

class SignupTest < ActionController::IntegrationTest

  test 'sign up' do  
    visit '/'
    click_link 'Sign Up!'
    fill_in 'Email', :with => 'bob@wagonlabs.com'
    click_button 'Sign up'
    assert page.has_content?("Password can't be blank")
    fill_in 'Email', :with => 'bob@wagonlabs.com'
    fill_in 'Password', :with => 'password'
    fill_in 'Password confirmation', :with => 'password'
    click_button 'Sign up'
    assert page.has_content?("You have signed up successfully.")
  end

  test 'create a product' do
    visit '/admin'
    save_and_open_page
  end

end
Run Code Online (Sandbox Code Playgroud)

save_and_open_page调用生成的页面是全局登录屏幕,而不是我期望的管理主页(注册登录).我在这做错了什么?

integration-testing ruby-on-rails capybara

5
推荐指数
1
解决办法
2292
查看次数