我试图在 Haskell 中将双精度浮点数 ( Double)2.0连续除以一百次。
当我得到值 时5960464477539.06250,将该值除以2.00000结果为2.9802322387695313e12(或2980232238769.53130)。从数学上来说,正确的结果是2980232238769.53125,但这里存在一些精度损失。
import Text.Printf (printf)
import System.Exit (exitSuccess)
main = do
n <- readLn :: IO Double
reading n 0
reading n c = do
if c == 100
then exitSuccess
else printf "%.5f\n" n
reading (n/2.0) (c+1)
Run Code Online (Sandbox Code Playgroud)
将值直接除以ghci:
Prelude> 5960464477539.06250/2
2.9802322387695313e12
Run Code Online (Sandbox Code Playgroud)
我已经阅读过有关 的内容Data.Scientific,但我无权访问该模块。如果没有它,在这种情况下有什么办法可以提高准确性吗?
System.out.println((26.55f/3f));
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println((float)( (float)26.55 / (float)3.0 ));
Run Code Online (Sandbox Code Playgroud)
等等
返回结果8.849999.不应该8.85.
任何人都可以解释这一点,还是我们都应该避免使用花车?
我的程序差不多完成了.我试图将CBA0123h除以B000h.商出来了.但是,应该在dx寄存器中的余数应该是:EA61(http://www.miniwebtool.com/hex-calculator/?number1=CBA0123&operate=4&number2=B000),而不是它的A123.我认为这与小端或其他东西有关.但我需要解决这个问题.我怎么能够?我旋转位?我以前从未见过如何做到这一点.如何从这个除法问题中得到正确的余数?
int main(int argc, char* argv[])
{
unsigned short int IDQUO = 0x0;
unsigned short int IDREM = 0x0;
mov dx, 0CBAh
mov ax, 0123h
mov bx, 0B000h
div bx
mov IDQUO, ax
mov IDREM, dx
return(0);
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C中整数除法的行为是什么?
当我使用应该在1和0之间的答案进行除法计算时,它总是返回0.
试试这个:
float a = 1;
float b = 2;
float c = a / b; //variable divide by variable gives 0.5 as it should
float d = 1 / 2; //number divide by number gives 0
float e = 4 / 2;
NSLog(@"%f %f %f %f %f", a,b,c, d, e);
Run Code Online (Sandbox Code Playgroud)
我从控制台得到这个:
2013-01-17 14:24:17.512 MyProject [1798:c07] 1.000000 2.000000 0.500000 0.000000 0.500000
我不知道发生了什么事.
((13 / 3 == 4) == true)
Run Code Online (Sandbox Code Playgroud)
为什么这等于真?13/3 = 4.3333和4.333不等于4.它是否自动转换为整数?和圆?
我在Java EE 8中测试过它.
我有一个数字,例如 X。我想检查它是否可以被 Y(另一个数字)整除。如果能被Y整除,我需要返回1,否则返回0。但是我不允许使用if条件、三元运算符、等于等。有什么建议吗?
好的......让我改一下这个问题......
如何在不使用除法或转换加倍的情况下获得整数的x 16th ...
可能重复:
除法返回零
简单计算由于某种原因不起作用
为什么是这样:
int prozent = (totalkcals / 2000) * 100;
Run Code Online (Sandbox Code Playgroud)
返回0?
totalkcals在这种情况下是567,我仔细检查过它.
当我尝试使用以下方法划分 BigDecimals 时:
divide(divisor, RoundingMode.HALF_UP)
它返回 0
但是,如果我没有这样的舍入模式就这样做:
divide(divisor)
我得到一个 ArithmeticException
我不在乎数字是否不是精确的十进制表示。如何在不得到 0 或异常的情况下划分 BigDecimals?
division ×10
c# ×3
java ×3
math ×2
assembly ×1
bigdecimal ×1
c ×1
double ×1
fractions ×1
haskell ×1
if-statement ×1
integer ×1
objective-c ×1
optimization ×1
precision ×1
rounding ×1
x86 ×1