小编200*_*ess的帖子

使用MathContext调用时,BigDecimal.divide()会产生额外的精度数字

鉴于简单的计划

import java.math.*;
import static java.math.BigDecimal.ONE;
import static java.lang.System.out;

public static void main(String[] args) {
    StringBuffer ruler = new StringBuffer("  ");
    for (int i = 0; i < 5; i++) {
         ruler.append("1234567890");
    }

    out.println(ONE.divide(new BigDecimal(47), 50, RoundingMode.HALF_UP));
    out.println(ONE.divide(new BigDecimal(47), new MathContext(50, RoundingMode.HALF_UP)));
    out.println(ruler);
    out.println(ONE.divide(new BigDecimal(6), 5, RoundingMode.HALF_UP));
    out.println(ONE.divide(new BigDecimal(6), new MathContext(5, RoundingMode.HALF_UP)));
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

0.02127659574468085106382978723404255319148936170213
0.021276595744680851063829787234042553191489361702128
  12345678901234567890123456789012345678901234567890
0.16667
0.16667
Run Code Online (Sandbox Code Playgroud)

我希望第二行输出与第一行相同.这是一个错误,还是我误解了BigDecimal文档?

JVM版本:

$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM …
Run Code Online (Sandbox Code Playgroud)

java precision bigdecimal arbitrary-precision

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

PEP和多行`__str__`返回

在python中,是否有针对__str__返回多行字符串的方法的PEP的一部分?

亲: PyCharm没有告诉我,谷歌画了一个空白

反对:我可以看到,如果有人连接它,感觉不是pythonic并且我不确定我能记得在我自己的代码中看到一个-bar,它会导致不优雅的反应

因此,我不确定是否只有多行__str__返回(保持简单)或单独留下__str__(返回<class foo>)并具有特殊模块(例如 foo.report()).

python pep8

3
推荐指数
1
解决办法
901
查看次数

救援中的DRY代码=> e在Rails中的各种模型文件中

在sidekiq_batch.rb中,

def sidekiq_status
  begin
    something    
  rescue => e
    Rails.logger.error("\nRESCUENIL in sidekiq_status #{e.class} #{e.message} in #{e.backtrace}")
    # FIXME RESCUENIL
    nil
  end
end
Run Code Online (Sandbox Code Playgroud)

在checkin.rb中,

def attached_receipt_image
  begin
    something else
  rescue => e
    Rails.logger.error("\nRESCUENIL in attached_receipt_image #{e.class} #{e.message} in #{e.backtrace}")
    # FIXME RESCUENIL
    nil
  end
end
Run Code Online (Sandbox Code Playgroud)

在barcode.rb中,

def receipt_check?
  begin
    some code      
  rescue => e
    Rails.logger.error("\nRESCUENIL in receipt_check #{e.class} #{e.message} in #{e.backtrace}")
    # FIXME RESCUENIL
    nil
  end
end
Run Code Online (Sandbox Code Playgroud)

需要干掉代码.如何在模型中为所有这些方法编写常见的错误记录例程?

ruby error-handling model ruby-on-rails dry

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

如何使用 apex 5.0 增加表格形式显示的行数

目前我的表格一次显示 10 行。如何增加要显示的行数,例如从当前默认的 10 行增加到 20 行之类的值?页面属性中是否有一个地方可以设置要显示的行数,就像交互式报告的情况一样?

oracle tabular-form oracle-apex

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

max-对象属性的函数

我想知道,max在关于特定属性的对象列表中使用最可能的pythonic方式.假设有这个类:

class Foo():
    def __init__(self, value):
        self.value = value
Run Code Online (Sandbox Code Playgroud)

现在有一个Foos 列表:

foos = [Foo(2), Foo(3), Foo(1)]
Run Code Online (Sandbox Code Playgroud)

我希望有最大价值这一名单.

我可以max在列表上使用:

max_value = max([foo.value for foo in foos])
Run Code Online (Sandbox Code Playgroud)

这总是首先构造一个列表(可能会降低巨大列表的性能),所以我想使用这个key参数:

max_value = max(foos, key=lambda foo: foo.value).value
Run Code Online (Sandbox Code Playgroud)

这看起来有点难看,因为我没有得到属性,而是对象.

我还可以定义__eq__,__le__里面的功能Foo,但是这将限制使用max特定值,我不能使用max一个以上的属性.

还有另一种方法,以一种漂亮的pythonic方式获得最大值吗?

python list max

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

C中针对语句z = ++ x || ++ y &amp;&amp; ++ z的运算符优先级

我正在学习运算符优先级,我不能够理解的价值如何x成为2和的yz1

x=y=z=1;

z=++x||++y&&++z;
Run Code Online (Sandbox Code Playgroud)

这评估为

x=2 y=1 z=1
Run Code Online (Sandbox Code Playgroud)

c operator-precedence

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

检查平衡分组字符时在线判断运行时错误

这是我的代码,用于检查一组分组字符是否正确平衡.它在我的本地机器上工作正常,但在线判断给我一个运行时错误.

#include <iostream>
#include <string>
#include <stack>
using namespace std;

bool balanced(string exp)
{
    stack<char> st;
    int i;
    for(i=0;i<exp.length();i++)
    {
            if(exp[i]== '{' || exp[i]=='[' || exp[i]== '(') st.push(exp[i]);
            else if(exp[i]=='}'){
                if(st.top() == '{' && !st.empty()) st.pop();
                else return false;
            }
            else if(exp[i]==')'){
                if(st.top() == '(' && !st.empty()) st.pop();
                else return false;
            }
            else if(exp[i]==']'){
                if(st.top()=='['  && !st.empty()) st.pop();
                else return false;
            }
    }
    if(st.empty())return true;
    else return false;
}

int main() {
    string exp;int n;
    cin >> n;
    cin.ignore();
    while(n--) …
Run Code Online (Sandbox Code Playgroud)

c++ stack runtime-error

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

两个日期之间的小时数列表

我想创建一个以小时为增量的日期列表,如下所示:

['2012060100', '2012060101', '2012060102', '2012060103', '2012060104', '2012060105', '2012060106', '2012060107', '2012060108', '2012060109', '2012060110', '2012060111', '2012060112', '2012060113', '2012060114', '2012060115', '2012060116', '2012060117', '2012060118', '2012060119', '2012060120', '2012060121', '2012060122', '2012060123', '2012060200', '2012060201', '2012060202'... '2012083122', '2012083123']
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样的事情:

deb = '20120601'
fin = '20120831'

start = datetime.datetime.strptime(deb, "%Y%m%d")
end = datetime.datetime.strptime(fin, "%Y%m%d")

date_lst = [start + datetime.timedelta(days=x) for x in range(0, ((end-start).days)+1)]

date_list = [dt.strftime("%Y%m%d") for dt in date_lst]
Run Code Online (Sandbox Code Playgroud)

但它仅打印之间的日期列表startend这样的:

['20120601', '20120602', '20120603', '20120604', ... , '20120830', '20120831']
Run Code Online (Sandbox Code Playgroud)

python datetime

0
推荐指数
1
解决办法
1590
查看次数

Scala错误:当代码出现在函数中时,"前向引用扩展了值的定义"

我正在尝试使用Scala 2.11.7编译以下代码.

object LucasSeq {
  val fibo: Stream[Int] = 0 #:: 1 #:: fibo.zip(fibo.tail).map { pair =>
    pair._1 + pair._2
  }

  def firstKind(p: Int, q: Int): Stream[Int] = {
    val lucas: Stream[Int] = 0 #:: 1 #:: lucas.zip(lucas.tail).map { pair =>
      p * pair._2 - q * pair._1
    }
    lucas
  }
}
Run Code Online (Sandbox Code Playgroud)

fibo基于Scala Stream文档中Fibonacci序列示例,它可以工作.

但是,firstKind试图用参数推广序列pq(制作第一类Lucas序列)的函数有以下错误:

LucasSeq.scala:7: error: forward reference extends over definition of value lucas
    val …
Run Code Online (Sandbox Code Playgroud)

scala compiler-errors forward-reference lazy-sequences

0
推荐指数
1
解决办法
964
查看次数

为什么"不想回复"出现在"非洲"之前按字母顺序排列?

这里有点奇怪:我在JavaScript中对这些字符串进行排序:

"African"
"French"
"Did not wish to reply"
"Spanish"
"Gujerati"
"Bengali"
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我使用这个代码块,其中nonPriorityLanguagesvar []包含字符串:

nonPriorityLanguages.sort(function (o1, o2) {
    return o1.description > o2.description;
});
Run Code Online (Sandbox Code Playgroud)

由于我不明原因,列表中的第一个是"不想回复".这不符合字母顺序,因为结果应该是:

    "African"
    "Bengali"
    "Did not wish to reply"
    "French"
    "Gujerati"
    "Spanish"
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting

-1
推荐指数
1
解决办法
80
查看次数

为什么我不能在C#三元表达式中使用break?

我试图将if else子句转换为while循环中的三元组,但是它不允许我在问号后面有一个中断,将中断处的错误指向为无效表达式.

我怎么会把这个简单的东西变成这样的三元组.

while (true)
{
    Console.WriteLine("Enter 3 words seperated by spaces: ");
    var input = Console.ReadLine();
    //input == "" ? break : ConvertToPascal(input);
    if (input == "")
        break;
    else
        ConvertToPascal(input);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# ternary-operator break

-3
推荐指数
2
解决办法
765
查看次数

为什么共享首选项不保存值?

我一直在Android工作室制作应用程序(游戏)并对其进行测试,但这一切似乎都有效.也就是说,当我获得新的高分时,它要么没有正确保存,要么没有正确显示.

public GamePanel(Context context) {
  super(context);
  this.mContext = context;
}





//display

public void drawText(Canvas canvas) {
    SharedPreferences prefs = mContext.getSharedPreferences("PrefsKeys", Context.MODE_PRIVATE);
    int oldScore = prefs.getInt("highScore", 0);
    int newScore = Player.getScore() * 3;

    //update score only if new score is higher
    if (newScore > oldScore) {
      SharedPreferences.Editor editor = prefs.edit();
      editor.putInt("highScore", 0);
      editor.commit();
    }

    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    paint.setTextSize(30);
    paint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
    canvas.drawText("DISTANCE: " + newScore, 10, HEIGHT - 10, paint);
    canvas.drawText("HighScore: " + oldScore, WIDTH - 215, HEIGHT - …
Run Code Online (Sandbox Code Playgroud)

java android sharedpreferences

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