JAVA ¾«È·¼ÆËãʱµÄÏÝÚå
troy
ÔÚjava.math°üÖÐÓиöBigDecimalÀ࣬ͨ¹ýÕâ¸öÀà¿ÉÒÔ½øÐо«È·¼ÆËã. ÎÒÃÇÖªµÀBigDecimalÓиösetScale(int ¾«¶È,int ÉáÈëģʽ)·½·¨£¬ËæÖ®¶øÀ´ÎÊÌâ³öÏÖÁË£¬µ±ÔËÐÐÈçÏ´úÂëʱ£º
/**
* @author troy(J2EE)
* @version 1.0
*/
import java.math.*;
public class Test{
public static void main(String[] args){
//¾«¶ÈΪ2,ËÄÉáÎåÈëģʽ
BigDecimal a =new BigDecimal(0.825).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(a);
}
}
È´¾ªÆæµØ´òÓ¡³ö½á¹û£º
0.82
Oh My God£¬¶Ô0.825½øÐÐСÊýµãºó±£Áô2λÓÐЧÊý×Ö£¬ËÄÉáÎåÈëºó½á¹ûÓ¦¸ÃÊÇ£º0.83¡£ÎªÊ²Ã´´òÓ¡½á¹ûÊÇ0.82£¿
û´íBigDecimal£¨double val£©Õâ¸ö¹¹ÔìÆ÷ÆÛÆÁËÎÒÃÇ£¬ËüʹÓÃÁË0.825µÄ½üËÆÖµ£¨0.8249999999999……£©À´¹¹ÔìBigDecimal¡£
Ϊʲô»áÕâÑù£¿
ÔÀ´JAVA´æ´¢¸¡µãÊý£¨float¡¢double£©Ê±£¬Ê¹ÓõÄÊÇIEEE754±ê×¼,ÿ¸ö¸¡µãÊýʹÓõÄÊÇ ·ûºÅλ¡¢½×Â롢βÊýÀ´±íʾ£º
````````·ûºÅλ ½×Âë βÊý ³¤¶È
float 1 8 23 32
double 1 11 52 64
ͨ¹ýÕâÖÖ·½·¨±£´æÔÚ¼ÆËã»úÀïÃæµÄ¸¡µãÊý£¬Êµ¼ÊÉÏÊÇËüµÄ½üËÆÖµ¡£¾ÙÀý˵Ã÷ÎÊÌ⣺
¶¨ÒåÒ»¸ödouble 38414.4£¬½«Ëüת»»Îª16½øÖÆ¡£ÎÒÃÇÏȼÆËãÕûÊý²¿·Ö38414µÈÓÚ960E¡£Ð¡Êý´¦Àí£º0.4=0*0.5+0.25*1+0.0625*0+……£¬Êµ¼ÊÉÏÎÒÃÇÓÀÔ¶¼ÆËã²»Íê¡£
½áÂÛ:µ±ÎÒÃǶ¨ÒåÒ»¸ö¸¡µãÊýʱ£¬Çë¸æËß×Ô¼º£¬ÎÒÃǶ¨ÒåÖ»²»¹ýÊÇÕâ¸ö¸¡µãÊýµÄ½üËÆÖµ£¬¼´0.825!=0.825¡£
ΪÁ˱ÜÃâÕâ¸öÎÊÌ⣬ÎÒÃÇÓ¦¸ÃʹÓÃÈçÏ·½·¨£º
/**
* @author troy(J2EE)
* @version 1.0
*/
import java.math.*;
public class Test{
public static void main(String[] args){
BigDecimal a =new BigDecimal("0.825").setScale(2, BigDe
Ïà¹ØÎĵµ£º
eval.jar ÐèÒªµ½https://eval.dev.java.net/
ÏÂÔØ
--ÏÂÃæÊÇʾÀýʹÓã¬Ö§³ÖÖÐÎıäÁ¿
Expression exp = new
Expression("(x + y)/2"
);
Map<String, BigDecimal> variables = new
HashMap<String, BigDecimal>();
variables.put("x", new
BigDecimal("4.32"
)); ......
×î½ü¹«Ë¾Òª¿ª·¢Windowsƽ̨ÉϵIJúÆ·£¨ÓÉÓÚÉæ¼°µ½ÉÌÒµ»úÃÜ£¬ËùÒÔĿǰÎÞ·¨¶ÔÕâ¸ö²úÆ·×öÏêϸ½éÉÜ£©£¬²ÉÓÃ.Net¼¼Êõ½øÐпª·¢£¬ÎÒ¸ºÔðµÄÊÇ»ùÓÚ Visual Studio²å¼þ»úÖÆµÄÐÐÒµ¿ª·¢¹¤¾ßµÄ¿ª·¢¡£´Ó¿ªÊ¼½Ó´¥.Netµ½ÏÖÔÚÒѾÓнüÈý¸öÔÂÁË£¬¶øÇÒÒ²¿ª·¢³öÁ˵ÚÒ»¸ö°æ±¾£¬¶Ô.NetÒѾÓÐÁËһЩÈÏʶ£¬ÓÉÓÚÒÔǰÖ÷ÒªÓÃJava¡¢PythonµÈÓïÑ ......
½Å±¾±äÁ¿ÊÇʹÓà var »ò def ¹Ø¼ü×ÖÉùÃ÷µÄ¡£
¶þÕßÖ®¼äµÄÇø±ðÔÚÓÚ£ºÔڽű¾µÄÕû¸öÉúÃüÖÜÆÚÄÚ¶¼¿ÉÒÔΪ var ±äÁ¿¸³ÓèÐÂÖµ£¬
¶ø def ±äÁ¿ÔÚ±»Ê״θ³ÓèÐÂÖµºó½«±£³Ö²»±ä£»
def numOne = 100;
def numTwo = 2;
var result;
add();
subtract();
multiply();
divide();
function add() {
result = numOne + numTwo; ......
System.out.println(2.00 -1.10);//0.8999999999999999
ÉÏÃæµÄ¼ÆËã³öµÄ½á¹û²»ÊÇ0.9£¬¶øÊÇÒ»Á¬´®µÄСÊý¡£ÎÊÌâÔÚÓÚ1.1 Õâ¸öÊý×Ö²»Äܱ»¾«È·±íʾ
Ϊһ¸ödouble£¬Òò´ËËü±»±íʾΪ×î½Ó½üËüµÄdouble Öµ£¬¸Ã³ÌÐò´Ó2 ÖмõÈ¥µÄ¾ÍÊÇÕâ¸öÖµ£¬
µ«Õâ¸ö¼ÆËãµÄ½á¹û²¢²»ÊÇ×î½Ó½ü0.9 µÄdoubleÖµ¡£
Ò»°ãµØËµ£¬ÎÊÌâÔÚÓÚ²¢²»ÊÇËùÓеÄСÊý¶¼¿ÉÒ ......
1¡¢¶ÔÏóÊǰ´ÒýÓô«µÝµÄ---´ø"="ºÅµÄ¸³Öµ²Ù×÷
2¡¢Java Ó¦ÓóÌÐòÓÐÇÒ½öÓеÄÒ»ÖÖ²ÎÊý´«µÝ»úÖÆ£¬¼´°´Öµ´«µÝ---ÓÉ"º¯Êýµ÷ÓÃ"ÒýÆðµÄ
3¡¢°´Öµ´«µÝÒâζ×ŵ±½«Ò»¸ö²ÎÊý´«µÝ¸øÒ»¸öº¯Êýʱ£¬º¯Êý½ÓÊÕµÄÊÇÔʼֵµÄÒ»¸ö¸±±¾
4¡¢°´ÒýÓô«µÝÒâζ×ŵ±½«Ò»¸ö²ÎÊý´«µÝ¸øÒ»¸öº¯Êýʱ£¬º¯Êý½ÓÊÕµÄÊÇÔʼֵµÄÄÚ´æµØÖ·£¬¶ø²»ÊÇÖµ µÄ¸±±¾
5¡¢×¢ ......