小编got*_*ube的帖子

基本减法中的Python错误?

可能重复:
Python舍入错误与浮点数
python数学是错误的

我不能让Python正确地做减法1 - 0.8并分配它.它一直提出错误的答案,0.19999999999999996.

我探讨了一下:

sq = {}
sub = {}
for i in range(1000):
    sq[str(i/1000.)+'**2']=((i/1000.)**2)
    sub['1-'+str(i/1000.)]=(1.0-(i/1000.))
Run Code Online (Sandbox Code Playgroud)

并发现这个错误发生在0到1到第三个小数位之间的一个随机的浮点组.当您对这些浮点数进行平方时,也会发生类似的错误,但会出现类似的错误.

我希望对此有一个解释,以及如何使Python正确运算.使用round(x,3)是我现在使用的解决方法,但它并不优雅.

谢谢!

这是我的Python 2.7.3 shell中的一个会话:

*** Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32. ***
*** Remote Python engine  is active ***
>>> 1-0.8
0.19999999999999996
>>> print 1-0.8
0.2
>>> a = 1-0.8
>>> a
0.19999999999999996
>>> print a
0.2
>>> a = 0.2
>>> print a
0.2
>>> a
0.2
>>> …
Run Code Online (Sandbox Code Playgroud)

python arithmetic-expressions subtraction

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

一次显示两个Toast消息?

我希望一个Toast消息显示在一个位置,另一个Toast消息同时显示在另一个位置.

  1. 多个Toast消息似乎总是按顺序排队和显示.是否可以同时显示两条消息?

  2. 是否有一种解决方法,至少提供该外观,并不涉及搞乱活动布局?

编辑:似乎第一个问题的答案是否定的,这是不可能的.解决方法怎么样?对我来说,一个解决方案包括像Toast一样出现在应用程序之上的东西,并且不会干扰用户与应用程序的交互(因此,不是AlertDialogue或任何调用onPause()等的东西).

android toast android-toast

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

Vim更改了.sml文件的shiftwidth

Win 7下的Vim将我的shiftwidth设置改为我不想要的.sml文件.

我想要的是所有东西都只用空格缩进,而且一切都是4个空格.这是我当前的_vimrc文件的内容,虽然我尝试了很多变化:

set nocompatible
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4

set guifont=Consolas:h9:cANSI
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

filetype plugin indent on

" Set the tab width
let s:tabwidth=4
exec 'set tabstop='    .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth
Run Code Online (Sandbox Code Playgroud)

当我第一次启动Vim没有加载文件时,:set shiftwidth返回shiftwidth=4.当我打开.py或.php文件时,它仍然会返回shiftwidth=4.但是,当我打开.sml文件或只保存带有.sml扩展名的空白文件时,它会更改为shiftwidth=2.手动设置:set shiftwidth=2适用于该会话,但每次打开.sml文件时都必须这样做.

它仅影响具有打开的.sml文件的缓冲区.未保存的缓冲区或同时打开其他文件类型的缓冲区显示shiftwidth = 4.

之前我没有使用filetype插件缩进的东西,但经过一些搜索后似乎可能是问题所在.我的ftplugin文件夹中没有文件,所以我添加filetype plugin indent on到我的_vimrc,创建了sml.vim并将其放在ftplugin文件夹中(再次尝试了很多变化:

set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4

" Set the tab width
let s:tabwidth=4 …
Run Code Online (Sandbox Code Playgroud)

vim indentation sml

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

为什么Eclipse不接受nextFocusForward中的有效Android ID?

我在RelativeLayout中有一些EditText视图.第一个正确地获得焦点,但是当用户在键盘上单击"完成"时,它通常不会将焦点发送到用户期望的视图.假设"完成"按钮使用FOCUS_FORWARDID,我试图通过使用如下android:nextFocusForward属性来修复此行为:

<EditText
    android:id="@+id/editTextName"
    ...
    android:nextFocusForward="@id/editTextNameColour" >
    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editTextNameColour"
    ...
    android:nextFocusForward="@id/editTextBackgroundColour" />

<EditText
    android:id="@+id/editTextBackgroundColour"
    ... />
Run Code Online (Sandbox Code Playgroud)

它没有编译,因为Eclipse给我一个错误消息,如:"错误:错误:找不到与给定名称匹配的资源(在'nextFocusForward',值为'@id/editTextNameColour')".

我知道名称是正确的,因为我从Eclipse的下拉列表中选择了它,并且所有文件都已保存.

Android Developers Reference说这EditText是正确的类型(a View).

如果有比使用android:nextFocusXxx属性更好的方法,包括在Java代码中执行它,那也没关系.

我不愿意通过使用一个来解决这个问题LinearLayout.

另外,我是对的,"完成"按钮使用了FOCUS_FORWARD

谢谢

解决方案:我需要使用@+id...而不是@id因为我引用了稍后在代码中声明的对象; 并且键盘似乎使用FOCUS_DOWN而不是FOCUS_FORWARD.

xml eclipse android android-layout

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