精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

告警:線上慎用 BigDecimal ,坑的差點被開了

開發 新聞
開發中,如果我們需要精確計算的結果,則必須使用BigDecimal類來操作。

Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變量double可以處理16位有效數,但在實際應用中,可能需要對更大或者更小的數進行運算和處理。

一般情況下,對于那些不需要準確計算精度的數字,我們可以直接使用Float和Double處理,但是Double.valueOf(String) 和Float.valueOf(String)會丟失精度。所以開發中,如果我們需要精確計算的結果,則必須使用BigDecimal類來操作。

BigDecimal所創建的是對象,故我們不能使用傳統的+、-、*、/等算術運算符直接對其對象進行數學運算,而必須調用其相對應的方法。方法中的參數也必須是BigDecimal的對象。構造器是類的特殊方法,專門用來創建對象,特別是帶有參數的對象。

BigDecimal常用構造函數

1、常用構造函數

  • BigDecimal(int)

創建一個具有參數所指定整數值的對象

  • BigDecimal(double)

創建一個具有參數所指定雙精度值的對象

  • BigDecimal(long)

創建一個具有參數所指定長整數值的對象

  • BigDecimal(String)

創建一個具有參數所指定以字符串表示的數值的對象

2、使用問題分析

使用示例:

BigDecimal a =new BigDecimal(0.1);
System.out.println("a values is:"+a);
System.out.println("=====================");
BigDecimal b =new BigDecimal("0.1");
System.out.println("b values is:"+b);

結果示例:

a values is:0.1000000000000000055511151231257827021181583404541015625
=====================
b values is:0.1

原因分析:

1)參數類型為double的構造方法的結果有一定的不可預知性。有人可能認為在Java中寫入newBigDecimal(0.1)所創建的BigDecimal正好等于 0.1(非標度值 1,其標度為 1),但是它實際上等于0.1000000000000000055511151231257827021181583404541015625。這是因為0.1無法準確地表示為 double(或者說對于該情況,不能表示為任何有限長度的二進制小數)。這樣,傳入到構造方法的值不會正好等于 0.1(雖然表面上等于該值)。

2)String 構造方法是完全可預知的:寫入 newBigDecimal(“0.1”) 將創建一個 BigDecimal,它正好等于預期的 0.1。因此,比較而言, 通常建議優先使用String構造方法。

3)當double必須用作BigDecimal的源時,請注意,此構造方法提供了一個準確轉換;它不提供與以下操作相同的結果:先使用Double.toString(double)方法,然后使用BigDecimal(String)構造方法,將double轉換為String。要獲取該結果,請使用static valueOf(double)方法。

BigDecimal常用方法詳解

1、常用方法

  • add(BigDecimal)

BigDecimal對象中的值相加,返回BigDecimal對象

  • subtract(BigDecimal)

BigDecimal對象中的值相減,返回BigDecimal對象

  • multiply(BigDecimal)

BigDecimal對象中的值相乘,返回BigDecimal對象

  • divide(BigDecimal)

BigDecimal對象中的值相除,返回BigDecimal對象

  • toString()

將BigDecimal對象中的值轉換成字符串

  • doubleValue()

將BigDecimal對象中的值轉換成雙精度數

  • floatValue()

將BigDecimal對象中的值轉換成單精度數

  • longValue()

將BigDecimal對象中的值轉換成長整數

  • intValue()

將BigDecimal對象中的值轉換成整數

2、BigDecimal大小比較

java中對BigDecimal比較大小一般用的是bigdemical的compareTo方法

int a = bigdemical.compareTo(bigdemical2)

返回結果分析:

a = -1,表示bigdemical小于bigdemical2;
a = 0,表示bigdemical等于bigdemical2;
a = 1,表示bigdemical大于bigdemical2;

舉例:a大于等于b

new bigdemica(a).compareTo(new bigdemical(b)) >= 0

BigDecimal格式化

由于NumberFormat類的format()方法可以使用BigDecimal對象作為其參數,可以利用BigDecimal對超出16位有效數字的貨幣值,百分值,以及一般數值進行格式化控制。

以利用BigDecimal對貨幣和百分比格式化為例。首先,創建BigDecimal對象,進行BigDecimal的算術運算后,分別建立對貨幣和百分比格式化的引用,最后利用BigDecimal對象作為format()方法的參數,輸出其格式化的貨幣值和百分比。

NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立貨幣格式化引用 
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小數點最多3位

BigDecimal loanAmount = new BigDecimal("15000.48"); //貸款金額
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘

System.out.println("貸款金額:\t" + currency.format(loanAmount));
System.out.println("利率:\t" + percent.format(interestRate));
System.out.println("利息:\t" + currency.format(interest));

結果:

貸款金額: ¥15,000.48 利率: 0.8% 利息: ¥120.00

BigDecimal格式化保留2為小數,不足則補0:

public class NumberFormat {

public static void main(String[] s){
System.out.println(formatToNumber(new BigDecimal("3.435")));
System.out.println(formatToNumber(new BigDecimal(0)));
System.out.println(formatToNumber(new BigDecimal("0.00")));
System.out.println(formatToNumber(new BigDecimal("0.001")));
System.out.println(formatToNumber(new BigDecimal("0.006")));
System.out.println(formatToNumber(new BigDecimal("0.206")));
}
/**
* @desc 1.0~1之間的BigDecimal小數,格式化后失去前面的0,則前面直接加上0。
* 2.傳入的參數等于0,則直接返回字符串"0.00"
* 3.大于1的小數,直接格式化返回字符串
* @param obj傳入的小數
* @return
*/
public static String formatToNumber(BigDecimal obj){
DecimalFormat df = new DecimalFormat("#.00");
if(obj.compareTo(BigDecimal.ZERO)==0) {
return "0.00";
}else if(obj.compareTo(BigDecimal.ZERO)>0&&obj.compareTo(new BigDecimal(1))<0){
return "0"+df.format(obj).toString();
}else {
return df.format(obj).toString();
}
}
}

結果為:

3.44
0.00
0.00
0.00
0.01
0.21

BigDecimal常見異常

除法的時候出現異常

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

原因分析:

通過BigDecimal的divide方法進行除法時當不整除,出現無限循環小數時,就會拋異常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

解決方法:

divide方法設置精確的小數點,如:divide(xxxxx,2)

BigDecimal總結

1、總結

在需要精確的小數計算時再使用BigDecimal,BigDecimal的性能比double和float差,在處理龐大,復雜的運算時尤為明顯。故一般精度的計算沒必要使用BigDecimal。盡量使用參數類型為String的構造函數。

BigDecimal都是不可變的(immutable)的, 在進行每一次四則運算時,都會產生一個新的對象 ,所以在做加減乘除運算時要記得要保存操作后的值。

2、工具類推薦

package com.vivo.ars.util;
import java.math.BigDecimal;

/**
* 用于高精確處理常用的數學運算
*/
public class ArithmeticUtils {
//默認除法運算精度
private static final int DEF_DIV_SCALE = 10;

/**
* 提供精確的加法運算
*
* @param v1 被加數
* @param v2 加數
* @return 兩個參數的和
*/

public static double add(double v1, double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}

/**
* 提供精確的加法運算
*
* @param v1 被加數
* @param v2 加數
* @return 兩個參數的和
*/
public static BigDecimal add(String v1, String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2);
}

/**
* 提供精確的加法運算
*
* @param v1 被加數
* @param v2 加數
* @param scale 保留scale 位小數
* @return 兩個參數的和
*/
public static String add(String v1, String v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 提供精確的減法運算
*
* @param v1 被減數
* @param v2 減數
* @return 兩個參數的差
*/
public static double sub(double v1, double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}

/**
* 提供精確的減法運算。
*
* @param v1 被減數
* @param v2 減數
* @return 兩個參數的差
*/
public static BigDecimal sub(String v1, String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2);
}

/**
* 提供精確的減法運算
*
* @param v1 被減數
* @param v2 減數
* @param scale 保留scale 位小數
* @return 兩個參數的差
*/
public static String sub(String v1, String v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 提供精確的乘法運算
*
* @param v1 被乘數
* @param v2 乘數
* @return 兩個參數的積
*/
public static double mul(double v1, double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}

/**
* 提供精確的乘法運算
*
* @param v1 被乘數
* @param v2 乘數
* @return 兩個參數的積
*/
public static BigDecimal mul(String v1, String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2);
}

/**
* 提供精確的乘法運算
*
* @param v1 被乘數
* @param v2 乘數
* @param scale 保留scale 位小數
* @return 兩個參數的積
*/
public static double mul(double v1, double v2, int scale){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return round(b1.multiply(b2).doubleValue(), scale);
}

/**
* 提供精確的乘法運算
*
* @param v1 被乘數
* @param v2 乘數
* @param scale 保留scale 位小數
* @return 兩個參數的積
*/
public static String mul(String v1, String v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到
* 小數點以后10位,以后的數字四舍五入
*
* @param v1 被除數
* @param v2 除數
* @return 兩個參數的商
*/

public static double div(double v1, double v2){
return div(v1, v2, DEF_DIV_SCALE);
}

/**
* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指
* 定精度,以后的數字四舍五入
*
* @param v1 被除數
* @param v2 除數
* @param scale 表示表示需要精確到小數點以后幾位。
* @return 兩個參數的商
*/
public static double div(double v1, double v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}

/**
* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指
* 定精度,以后的數字四舍五入
*
* @param v1 被除數
* @param v2 除數
* @param scale 表示需要精確到小數點以后幾位
* @return 兩個參數的商
*/
public static String div(String v1, String v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v1);
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 提供精確的小數位四舍五入處理
*
* @param v 需要四舍五入的數字
* @param scale 小數點后保留幾位
* @return 四舍五入后的結果
*/
public static double round(double v, int scale){
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}

/**
* 提供精確的小數位四舍五入處理
*
* @param v 需要四舍五入的數字
* @param scale 小數點后保留幾位
* @return 四舍五入后的結果
*/
public static String round(String v, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 取余數
*
* @param v1 被除數
* @param v2 除數
* @param scale 小數點后保留幾位
* @return 余數
*/
public static String remainder(String v1, String v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.remainder(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 取余數 BigDecimal
*
* @param v1 被除數
* @param v2 除數
* @param scale 小數點后保留幾位
* @return 余數
*/
public static BigDecimal remainder(BigDecimal v1, BigDecimal v2, int scale){
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
return v1.remainder(v2).setScale(scale, BigDecimal.ROUND_HALF_UP);
}

/**
* 比較大小
*
* @param v1 被比較數
* @param v2 比較數
* @return 如果v1 大于v2 則 返回true 否則false
*/
public static boolean compare(String v1, String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
int bj = b1.compareTo(b2);
boolean res;
if (bj > 0)
res = true;
else
res = false;
return res;
}
}
責任編輯:張燕妮 來源: 蘇三說技術
相關推薦

2022-04-08 08:48:16

線上事故日志訂閱者

2023-11-18 09:09:44

OpenAI微軟

2023-06-30 08:10:14

JavaBigDecimal

2024-04-10 08:39:56

BigDecimal浮點數二進制

2025-05-16 10:17:54

2018-04-15 22:17:20

PHP引用變量

2023-05-14 22:25:33

內存CPU

2023-03-27 07:39:07

內存溢出優化

2020-11-18 09:56:46

Java開發代碼

2015-08-25 15:58:33

編程集錦

2020-07-01 09:07:52

SQL索引語句

2025-09-15 07:51:35

2022-07-19 07:30:06

BigDecimal運算float

2015-10-19 09:05:01

程序員成長

2015-10-26 10:49:07

程序員

2021-10-22 05:56:31

數據庫鎖表鎖定機制

2020-11-24 08:15:09

Elasticsear面試分布式

2021-01-13 09:14:00

緩存穿透RPC

2020-08-04 17:42:28

MyBatis版本升級

2025-09-08 11:05:00

磁盤擴容運維系統運維
點贊
收藏

51CTO技術棧公眾號

欧美一区二区美女| 国产精品高潮久久久久无| 97国产成人精品视频| 久久久久亚洲AV成人无码国产| 成av人片在线观看www| 91麻豆国产香蕉久久精品| 国产精品一久久香蕉国产线看观看| 日本黄色录像视频| 精品日产乱码久久久久久仙踪林| 在线观看www91| 国产免费一区二区视频| 韩国福利在线| 成人一二三区视频| 国产精品久久久久久久久久99| 四虎精品免费视频| 思热99re视热频这里只精品| 欧美另类高清zo欧美| 免费一级特黄毛片| 国产黄网站在线观看| 久久久一区二区| 99国内精品久久久久久久软件| 国产精品久久久久久久久久精爆| 欧美韩日精品| 最近2019中文免费高清视频观看www99| 无码国产精品一区二区高潮| 成人免费在线观看视频| 午夜电影一区二区三区| 中文字幕中文字幕一区三区| 免费在线黄色影片| 高清国产一区二区| 成人免费福利在线| 成年人视频免费| 国产欧美在线| 欧美激情精品久久久久久| 国产真人做爰视频免费| 美女网站色精品尤物极品姐弟| 欧美精品日韩综合在线| 免费日韩视频在线观看| gogo高清午夜人体在线| 亚洲靠逼com| 一区二区精品在线| 成人在线免费观看| 久久久久一区二区三区四区| 精品国产乱码久久久久久丨区2区| 97免费观看视频| 日本一区中文字幕| 国产成人a亚洲精品| 毛片基地在线观看| 一本色道久久| 97精品一区二区视频在线观看| 免费中文字幕在线观看| 亚洲最大黄网| 久久久精品在线观看| 日本裸体美女视频| 日韩中文字幕高清在线观看| 一区二区福利视频| 免费成人深夜天涯网站| 不卡在线一区| 日日骚久久av| 亚洲欧美卡通动漫| 亚洲成人二区| 久操成人在线视频| 一区二区三区免费高清视频| 黄色成人av网站| 欧美精品精品精品精品免费| 国产在线视频你懂的| 在线欧美福利| 日本高清+成人网在线观看| 四虎成人在线观看| 丝袜脚交一区二区| 国产在线999| 国产偷拍一区二区| 国产成人av在线影院| 国产女人水真多18毛片18精品| 欧日韩在线视频| 91蝌蚪porny| 色之综合天天综合色天天棕色| 婷婷在线视频| 洋洋av久久久久久久一区| 日本中文字幕亚洲| 日本欧美一区| 91麻豆精品国产自产在线观看一区| 精品国产鲁一鲁一区二区三区| 无码国模国产在线观看| 亚洲国产高清高潮精品美女| 高潮毛片无遮挡| 91综合网人人| 性欧美视频videos6一9| 中文字幕91爱爱| 国产精品99久久久| 欧美日韩免费观看一区| 老司机精品影院| 婷婷夜色潮精品综合在线| 成人免费无码av| 成人综合日日夜夜| 亚洲精品www久久久久久广东| 亚洲码无人客一区二区三区| 亚洲一级毛片| 日本久久久久亚洲中字幕| 91麻豆国产在线| 成人性生交大片免费看视频在线| 精品视频一区二区| 黄色成人影院| 色综合一个色综合| 久久艹这里只有精品| 香蕉久久夜色精品国产使用方法 | lutube成人福利在线观看| 亚洲男人的天堂av| 欧美精品一区二区三区免费播放| 国产精品美女久久久久人| 国产乱色精品成人免费视频| 95精品视频在线| 三上悠亚免费在线观看| 日韩影片中文字幕| 精品乱人伦小说| 中国1级黄色片| 99精品欧美| 亚洲精品女av网站| 成人福利在线| 欧美性猛交xxxx免费看漫画| 中文字幕av一区二区三区人妻少妇 | 9a蜜桃久久久久久免费| 成人动漫在线播放| 欧美日韩中文字幕综合视频| 日本黄色大片在线观看| 91亚洲国产高清| 国产精品久久视频| 青青青草网站免费视频在线观看| 一区二区成人在线观看| 日韩成人精品视频在线观看| 国内成人精品| 日韩av男人的天堂| 五月婷婷六月丁香| 亚洲国产视频一区二区| 在线一区二区不卡| 日韩成人免费| 国产久一一精品| 丁香在线视频| 在线看国产一区二区| 中文字幕丰满孑伦无码专区| 亚洲区欧美区| 国产一区二区在线观看免费播放| 青青在线视频| 欧美sm极限捆绑bd| 免费中文字幕在线观看| 国产福利一区二区三区视频在线 | 色综合久久久久久久久五月| 三上悠亚亚洲一区| 亚洲欧美综合区自拍另类| 中文字字幕在线中文| xnxx国产精品| wwwwww.色| 日本不卡免费一区| 国产精品免费电影| 日本在线观看网站| 欧美一区欧美二区| 一区二区成人免费视频| 国产精品一区在线观看乱码| 一二三四中文字幕| 成人18夜夜网深夜福利网| 久久全球大尺度高清视频| 国精品人妻无码一区二区三区喝尿| 亚洲精品国产精品乱码不99 | 久久久久久久久久看片| 日韩视频第二页| jizzjizz欧美69巨大| 国产美女主播一区| 91亚洲天堂| 精品盗摄一区二区三区| 国产a∨精品一区二区三区仙踪林| 91丨九色porny丨蝌蚪| 日韩一级免费在线观看| 欧美午夜精彩| 91亚洲va在线va天堂va国 | 日韩美女视频免费看| 国产h在线观看| 欧美人妇做爰xxxⅹ性高电影| av成人免费网站| 成人av在线资源网| 亚洲熟妇av一区二区三区| 欧美高清在线| 国产精品久久久久久免费观看| 国产剧情av在线播放| 国产一区二区成人| 亚洲av综合色区无码一二三区| 亚洲成人免费在线| 少妇久久久久久久久久| 激情综合色综合久久| 奇米影视亚洲色图| 精品视频免费| 成人动漫视频在线观看免费| 三上悠亚亚洲一区| 欧美伦理91i| 黄色软件在线| 日韩欧美你懂的| www.浪潮av.com| 香蕉久久99| 91网免费观看| 日韩性xxx| 国内伊人久久久久久网站视频 | 国产精品久久久久影视| caopor在线| 麻豆国产欧美日韩综合精品二区| 欧美久久在线观看| 手机在线一区二区三区| 久久婷婷开心| 国产精品视频首页| 国产999精品久久久| 欧美大片黄色| 久久精品亚洲精品| 精品亚洲综合| 日韩av影片在线观看| 国产在成人精品线拍偷自揄拍| 欧美色xxxx| 精品少妇久久久久久888优播| 国产精品美女久久久久aⅴ国产馆| 日韩无码精品一区二区| 精品夜夜嗨av一区二区三区| www黄色在线| 亚洲视频成人| 欧美久久在线观看| 欧美一区综合| 中文字幕一区二区三区5566| 国产videos久久| 久久国产精品高清| 91在线一区| 成人情视频高清免费观看电影| 亚洲欧洲二区| 国产精品亚洲精品| 精品免费av一区二区三区| 欧洲成人午夜免费大片| 成人一级福利| 午夜美女久久久久爽久久| 激情图片在线观看高清国产| 欧美xxxx综合视频| 美女免费久久| 久久久www成人免费精品| 日本视频不卡| 色妞在线综合亚洲欧美| 国产福利在线看| 一区二区三区 在线观看视| 青青青草原在线| 国产亚洲精品久久久久动| 精华区一区二区三区| 亚洲视频在线观看免费| 黄色av网址在线免费观看| 亚洲色图激情小说| 国产尤物视频在线| 中文字幕不卡av| 午夜视频在线看| 久久久999精品视频| а√天堂资源地址在线下载| 久久97精品久久久久久久不卡| 性爱视频在线播放| 欧美激情亚洲自拍| 国产中文在线播放| 日本一区二区三区在线播放| 激情开心成人网| 国产精品久久久久久亚洲影视| 伦一区二区三区中文字幕v亚洲| 国产欧美中文字幕| 国产一区二区在线观| 高清不卡日本v二区在线| 久久午夜影院| 欧美资源一区| 91精品天堂福利在线观看| 黄色录像特级片| 亚洲第一伊人| www.天天射.com| 国产一区二区三区蝌蚪| 国产婷婷在线观看| 久久久青草青青国产亚洲免观| 992在线观看| 亚洲免费观看高清| 国产成人在线免费观看视频| 91久久久免费一区二区| 中文字字幕在线中文乱码| 欧美一区二区三区在线看| 天天操天天爱天天干| 国产一区二区免费| 特级毛片在线| 国产精品99久久久久久久久| av日韩久久| 久久66热这里只有精品| 日韩欧美视频在线播放| 97视频在线免费| 麻豆精品视频在线观看视频| 日本精品一二三| 国产网站一区二区三区| 欧美日韩综合一区二区| 欧美在线观看视频一区二区三区| www.成人在线观看| 亚洲性视频网站| 国产蜜臀av在线播放| 在线欧美视频| 免费国产黄色网址| 日本va欧美va瓶| 欧美一级片黄色| 国产精品国产精品国产专区不蜜 | 中文字幕在线免费不卡| av资源吧首页| 欧美日韩激情一区二区| 无码国产色欲xxxx视频| 久久精品小视频| 色豆豆成人网| 激情小说网站亚洲综合网| 欧美xxxx中国| 苍井空浴缸大战猛男120分钟| 国产精品2024| 永久免费未视频| 色综合久久综合网欧美综合网 | 成人全视频在线观看在线播放高清 | 中文人妻熟女乱又乱精品| 亚洲成人黄色在线| 国产在线高清视频| 国产精品精品视频| 欧美a大片欧美片| 日本丰满大乳奶| 男男成人高潮片免费网站| 一级特级黄色片| 亚洲自拍偷拍欧美| 91 中文字幕| 在线播放亚洲激情| 樱桃视频成人在线观看| 国产美女精品在线观看| 欧美先锋影音| 国产裸体视频网站| 亚洲婷婷综合久久一本伊一区| 中文精品久久久久人妻不卡| 日韩精品欧美国产精品忘忧草| 深夜国产在线播放| 亚洲a∨日韩av高清在线观看| 日韩欧美一区二区三区在线视频| 日本熟妇人妻xxxxx| 91麻豆福利精品推荐| 日韩乱码一区二区| 日韩av在线网| 欧亚av在线| 国内视频一区| 亚洲视频1区| 网站免费在线观看| 欧美午夜精品在线| 国产精品国产高清国产| 91精品国产777在线观看| 久久久久观看| 精品国产免费av| 久久久综合视频| 亚洲精品国产精品乱码视色| 在线视频国产日韩| 久久久久伊人| 国产精品h视频| 国产高清在线观看免费不卡| 亚洲一区二区91| 精品视频在线播放免| 免费日韩电影| 亚洲精蜜桃久在线| 极品少妇xxxx精品少妇| 黄色一级片中国| 精品国产一区二区三区久久影院| 国产一二三在线| 欧美日韩精品免费观看| 日日噜噜夜夜狠狠视频欧美人 | 丰满熟女人妻一区二区三区| 亚洲国产另类av| 男女网站在线观看| 91精品国产自产在线观看永久| 亚洲综合婷婷| 日本黄色录像片| 欧美午夜精品一区二区三区| 黄色国产网站在线播放| 国内精品一区二区| 男女男精品网站| 黄色一级免费视频| 精品视频www| 日韩欧乱色一区二区三区在线 | 国产成人av自拍| 亚洲 欧美 中文字幕| 中文字幕av一区| 国内自拍欧美| 国产一级特黄a大片免费| 亚洲免费在线电影| 性感美女视频一二三| 国产精品免费久久久久久| 欧美日本在线| 欧美成人国产精品一区二区| 91精品国产综合久久久久久| 电影在线观看一区| 一本一本久久a久久精品综合妖精| 国产成人av影院| 艳妇乳肉豪妇荡乳av无码福利 | 看黄色一级大片| 欧美肥婆姓交大片| 国产欧美一区二区三区精品观看| 亚洲综合20p| 色欲综合视频天天天| 色爱综合区网| 相泽南亚洲一区二区在线播放| 成人午夜电影网站| 在线观看日韩一区二区| 97在线观看免费|