java大数据计算遇到的科学计数显示问题及运算时精度丢失问题分析解决

34 篇文章 0 订阅
订阅专栏

大数据计算遇到的科学计数问题及运算精度丢失问题

在《Effective Java》这本书中就给出了一个解决方法。该书中也指出,floatdouble只能用来做科学计算或者是工程计算,在商业计算等精确计算中,我们要用java.math.BigDecimal

对于数据的计算可以用java.math.BigDecimal类的原生方法加减乘除都包括了

我这里有个工具类可以借鉴参考一下:

package com.dm.springboot.utils;

import java.math.BigDecimal;
import java.text.NumberFormat;

/**
 * 
 * 计算
 *
 */
public class MathUtils {
	// 默认除法运算精度
	private static final int DEF_DIV_SCALE = 10;
	// 加
	public static double add(double d1, double d2) {

		if (Double.isNaN(d1) || Double.isNaN(d2)) {
			return Double.NaN;
		}

		BigDecimal big1 = BigDecimal.valueOf(d1);
		BigDecimal big2 = BigDecimal.valueOf(d2);

		return big1.add(big2).doubleValue();
	}

	// 减
	public static double subtract(double d1, double d2) {
		if (Double.isNaN(d1) || Double.isNaN(d2)) {
			return Double.NaN;
		}

		BigDecimal big1 = BigDecimal.valueOf(d1);
		BigDecimal big2 = BigDecimal.valueOf(d2);

		return big1.subtract(big2).doubleValue();
	}

	/**
	 * 减法运算 1.NaN - NaN = NaN 2.NaN - v = NaN 3.v - NaN = v 4.v1-v2 = v3
	 * 
	 * @param v1
	 *            被减数
	 * @param v2
	 *            减数
	 * @param flag
	 * @return
	 */
	public static double subtract(double v1, double v2, boolean flag) {
		if (Double.isNaN(v1)) {
			return Double.NaN;
		} else if (Double.isNaN(v2)) {
			return v1;
		}

		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 double mul(double v1, double v2) {
		if (Double.isNaN(v1) || Double.isNaN(v2)) {
			return Double.NaN;
		}

		BigDecimal b1 = new BigDecimal(Double.toString(v1));

		BigDecimal b2 = new BigDecimal(Double.toString(v2));

		return b1.multiply(b2).doubleValue();

	}

	/**
	 * 
	 * 提供精确的连乘运算。
	 * 
	 * @param inputs
	 *            连乘参数
	 * 
	 * @return 积
	 * 
	 */
	public static double mul(double[] inputs) {

		double res = 0.0;
		for (int i = 0; i < inputs.length - 1; i++) {
			double v1 = 0.0;
			double v2 = 0.0;
			if (i == 0)
				v1 = inputs[i];
			else
				v1 = res;
			v2 = inputs[i + 1];

			if (Double.isNaN(v1) || Double.isNaN(v2)) {
				return Double.NaN;
			}

			BigDecimal b1 = new BigDecimal(Double.toString(v1));

			BigDecimal b2 = new BigDecimal(Double.toString(v2));

			res = b1.multiply(b2).doubleValue();
		}
		return res;

	}

	/**
	 * 
	 * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
	 * 
	 * 小数点以后10位,以后的数字四舍五入。
	 * 
	 * @param v1
	 *            被除数
	 * 
	 * @param v2
	 *            除数
	 * 
	 * @return 两个参数的商
	 * 
	 */
	public static double div(double v1, double v2) {
		if (Double.isNaN(v1) || Double.isNaN(v2)) {
			return Double.NaN;
		}

		return div(v1, v2, DEF_DIV_SCALE);
		/*BigDecimal b1 = new BigDecimal(v1);

		BigDecimal b2 = new BigDecimal(v2);

		return b1.divide(b2, BigDecimal.ROUND_HALF_UP).doubleValue();*/

	}

	/**
	 * 
	 * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
	 * 
	 * 定精度,以后的数字四舍五入。
	 * 
	 * @param v1
	 *            被除数
	 * 
	 * @param v2
	 *            除数
	 * 
	 * @param scale
	 *            表示表示需要精确到小数点以后几位。
	 * 
	 * @return 两个参数的商
	 * 
	 */
	public static double div(double v1, double v2, int scale) {
		if (Double.isNaN(v1) || Double.isNaN(v2)) {
			return Double.NaN;
		}

		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 inputs
	 *            连除参数,必须保证顺序
	 * 
	 * @param scale
	 *            表示表示需要精确到小数点以后几位。
	 * 
	 * @return 参数的商
	 * 
	 * @author Add by Huang Ye
	 * 
	 */
	public static double div(double[] inputs, int scale) {
		if (scale < 0) {
			throw new IllegalArgumentException("The scale must be a positive integer or zero");
		}
		double res = 0.0;
		for (int i = 0; i < inputs.length - 1; i++) {
			double v1 = 0.0;
			double v2 = 0.0;
			if (i == 0)
				v1 = inputs[i];
			else
				v1 = res;
			v2 = inputs[i + 1];

			if (Double.isNaN(v1) || Double.isNaN(v2)) {
				return Double.NaN;
			}

			BigDecimal b1 = new BigDecimal(Double.toString(v1));

			BigDecimal b2 = new BigDecimal(Double.toString(v2));

			res = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
		}
		return res;

	}

	/**
	 * 
	 * 提供精确的小数位四舍五入处理。
	 * 
	 * @param dValue
	 *            需要四舍五入的数字
	 * 
	 * @param lScale
	 *            小数点后保留几位
	 * 
	 * @return 四舍五入后的结果
	 * 
	 */
	public static double round(double dValue, int lScale) {
		// 负数,则装化为正数后进行四舍五入
		boolean bFlag = false;
		if (dValue < 0) {
			bFlag = true;
			dValue = -dValue;
		}
		long lPrecision = 10000; // 精度值,为了避免double型出现偏差,增加校验位
		long l45Value = lPrecision / 2 - 1; // 四舍五入的判断值
		long lLength = 1; // 乘的数字
		for (int i = 0; i < lScale; i++) {
			lLength = lLength * 10; // 比如保留2位,乘以100
		}
		long lValue = (long) dValue; // 值的整数部分
		long lValue1 = (long) ((dValue - lValue) * lLength); // 乘以保留位数
		long lValue2 = (long) ((dValue - lValue) * lLength * lPrecision); //
		long lLastValue = lValue2 - (lValue2 / lPrecision) * lPrecision;
		if (lLastValue >= l45Value) {
			lValue1++;
		}
		dValue = lValue + (double) lValue1 / lLength; // 四舍五入后的值
		if (bFlag) {
			dValue = -dValue;
		}
		BigDecimal bd = BigDecimal.valueOf(dValue);
		bd = bd.setScale(lScale, BigDecimal.ROUND_HALF_UP);
		return bd.doubleValue();
	}

	/**
	 * 
	 * 提供两个数的比较 by Huang Ye
	 * 
	 * @param d1
	 *            需要比较的数字1
	 * 
	 * @param d2
	 *            需要比较的数字2
	 * 
	 * @param scale
	 *            与之比较的数字的小数位数
	 * 
	 * @return 是否相等
	 * 
	 */
	public static boolean equals(double d1, double d2, int scale) {
		if (Double.isNaN(d1) || Double.isNaN(d2)) {
			return false;
		}

		double difference = Math.abs(d1 - d2);
		double minNum = Math.pow(10, (-1) * scale);
		if (difference < minNum)
			return true;
		else
			return false;
	}

	/**
	 * 四舍五入保留两位小数
	 * 
	 * @param number
	 * @return
	 */
	public static Double to2dec(Number number) {
		NumberFormat format = NumberFormat.getInstance();

		format.setMaximumFractionDigits(2);
		format.setGroupingUsed(false);

		return Double.valueOf(format.format(number.doubleValue() + 1.0e-5));// 防止0.005被舍掉

	}
	/**
	 * 判断是否为数字或者小数
	 *
	 * @param str
	 * @return
	 */
	public static boolean isNumeric(String str){
		/*String reg = "\\d+(\\.\\d+)?";
		return str.matches(reg);*/
		if(str.indexOf("E")>0){
			//科学计数法或者字符串
			try {
				String  bigdecimal= new BigDecimal(str).toString();
			} catch (Exception e) {
				return false;//异常 说明包含非数字。
			}
			return true;
		}else{
			return false;
		}
	}
}

double类型数据加减乘除操作时精度丢失的问题

比方说:

这就需要先把double转换为字符串然后在作为BigDecimal(String val)构造函数的参数。转换为BigDecimal对象之后再进行加减乘除操作,这样精度就不会出现问题了。这也是为什么有关金钱数据存储都使用BigDecimal

例如:

public static double addDouble(double m1, double m2) {

        BigDecimal p1 = new BigDecimal(Double.toString(m1));

        BigDecimal p2 = new BigDecimal(Double.toString(m2));

        return p1.add(p2).doubleValue();

}

举例:

 

我们可以看出不管是DecimalFormat,还是Double.toString(),还是String.valueOf(),都最多只是精确到小数点后21位。还是会出现精度的丢失,相比与小数点后59位最大数,还是会丢失一多半的精度。

所以,如果我们计算BigDecimal数据,最好还是使用BigDecimal原生的计算方法。

但是大多数情况,我们都是使用Double保存数据,所以计算时,要想最大限度的保留精度,最好指定精度为59。59位是BigDecimal能够保留的小数点后最大位数。

例如:

public static double div(double v1, double v2) {

    if (Double.isNaN(v1) || Double.isNaN(v2)) {

        return Double.NaN;

    }

    BigDecimal b1 = new BigDecimal(Double.toString(v1));



    BigDecimal b2 = new BigDecimal(Double.toString(v2));

    BigDecimal result=b1.divide(b2,59,BigDecimal.ROUND_HALF_UP);

    System.out.println("MathUtilPlus,result:"+result);

    return Double.parseDouble(String.valueOf(result));



}

 

 

避免出现科学计数法:

public class testNumber {

    public static void main(String[] args) {

        Double s =1.00000555555555555555567120378728734269518301718764834933811;

        System.out.println("第一种方法:"+NonScientificNotation1(s));

        System.out.println("第二种方法:"+NonScientificNotation2(s,59));

    }

    /**

    * @Description: 使用BigDecimal处理

    * @Param: [num 要转的科学数字]

    */

    public static String NonScientificNotation1(Double num)

    {

        String result=new BigDecimal(num.toString()).toString();

        return result;

    }

    /**

    * @Description: 使用DecimalFormat处理

    * @Param: [num 要转的科学数字, scale 要保留小数点后的位数]

    */

    public static String NonScientificNotation2(Double num,int scale)

    {

        DecimalFormat df = new DecimalFormat("0.0");

        //设置a的小数部分允许的最大数字数

        df.setMaximumFractionDigits(scale);

        String result=df.format(num);

        return result;

    }

}

 

后端大数在前端被转换为科学计数法,导致数值丢失问题解决
甘蓝的专栏
05-23 1491
项目中前端JavaScript出现科学计数法,导致数据精度出现丢失解决办法。
java处理科学计数法转成普通数字精度失真问题
weixin_43421537的博客
01-22 1806
在读取excel文件,文件中是小数,使用java读取后变成了科学计数法,如果需要再次转成小数,可以使用BigDecimal类。 特别注意: BigDecimal(double)的方式,将double转成BigDecimal,会有精度损失。 错误实例: BigDecimal b = newBigDecimal(0.1d); 实际存储结果为:0.10000000149. 解决方式: 使用BigDecimal(String)构造函数处理,先将dou...
Clickhouse异常:Exception: No operation equals between Decimal(X, X) and Float64
最新发布
ihchenchen的博客
03-22 489
会报错如下:Exception: No operation equals between Decimal(X, X) and Float64。不管Decimal映射的java类型是Double还是BigDecimal都会报错,说到底它还是到数据库执行报错了。原因是clickhouse会将10.2认为是float64类型,不是decimal类型,无法互转。
前端JS大数字精度丢失
m0_60551898的博客
06-14 518
这样就可以将long型的数据转换为String类型返回给前端。原因:JavaScript的Number类型的安全整数范围是。,如果超过这个范围,就会发生精度丢失问题。将long型的数据转换为String类型返回,
mybatis批量添加数字丢失精度问题
fanyuna的专栏
11-16 3653
     背景:参与开发的系统A要与系统B交互,系统B使用的是SQLServer数据库,为了快速开发当想采用dblink实现,但为了安全性起见,还是采用接口实现,接口的客户端和服务端都是自己写,采用的Mybatis操作数据库,批量插入。 问题:A系统的数据同步至B系统,小数的精度丢失了。 排查:断点跟踪了接口客户端、服务端的数据,到插入SQLServer数据库之前数字数据都是正确的,而且字...
javaDouble与Float计算加减乘除精度丢失问题解决
qinghuidu的博客
01-21 2931
double、float类型数据加减操作精度丢失问题 问题:在进行double、float类型的计算,会出现精度丢失问题 如:1+1.1+1.01,预期结果3.11,可在程序计算中却不是这个结果 public static void main(String[] args) { double d1 = 1; double d2 = 1.1; double d3 = 1.01; double d4= d1 + d2 + d3;
解决Java中由于数据太大自动转换成科学计数法问题
08-27
然而,在Java中处理大数据,经常会出现自动转换成科学计数法问题。今天,我们将分享两种解决Java大数据自动转换成科学计数法问题的方法。 问题描述 在Java中,当我们处理大数据,例如Long类型或Double...
完美解决python中ndarray 默认用科学计数法显示问题
09-20
今天小编就为大家分享一篇完美解决python中ndarray 默认用科学计数法显示问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
jackson json 转 map 数值科学计数法问题解决.docx
03-12
Jackson JSON 转 Map 之科学计数法问题解决方案 Jackson 是一个流行的 ...通过启用 USE_BIG_DECIMAL_FOR_FLOATS 选项,我们可以解决 Jackson 将 JSON 转换为 Map 科学计数法问题,从而确保数据的精度和正确性。
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
12-18
解决科学计数问题,只要赋值加一对引号即可. 如: <?php $n = '22222222222222222222222222220'; echo $n; ?> 如果不加引号,显示2.2222222222222E+28,加引号后显示22222222222222222222222222220 超大...
Java Double转Bigdecimal丢失精度原因学习
qq_35431829的博客
12-03 2273
记录学习Double转Bigdecimal丢失精度的原因 注意事项: 不能直接使用Bigdecimal的构造函数传double进行转换,部分数值会丢失精度,因为计算机是二进制的Double无法精确的储存一些小数位,0.1的double数据存储的值实际上并不真的等于0.1 如该方式将0.1转换为Bigdecimal得到的结果是 0.1000000000000000055511151231257827021181583404541015625 这是为什么呢,以往只是知道结论知道不能这么用,也大概知道是因为do
Java】数据类型-精度失真问题
爱写bug的王六六
03-16 1321
百度百科 Javajava.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。 双精度浮点型变量double可以处理16位有效数。 在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。 BigDecimal所创建的是对象,不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。 方法中的参数也必须是BigDecima
java Double精度缺失
码易的博客
07-30 257
在使用Double计算数值,经常会遇见精度缺失的问题,例如 @Test public void testDouble() { Double a = Double.valueOf(0.05); BigDecimal bd = new BigDecimal(a); String s = bd.toPlainString(); System.out.println(s); } 结果打印出 0.0500000000000000..
【避坑】解决后端返回Long类型的数据前端精度丢失问题
小学弟的博客
06-14 2172
今天又遇到了后端返回的某个字段的数字太长,JS精度丢失了,导致前端展示的候数字变成了科学计数法,有些甚至直接展示错误!
日常踩坑:Javadouble类型出现科学计数法问题
qq_34617629的博客
01-30 6090
日常踩坑:Javadouble类型出现科学计数法问题
Java Double精度丢失问题
incredibleww的博客
03-12 3188
一、精度丢失原理 例1:15.75 -> 1111.11 step1:拆分 将整数和小数部分拆分得:15 和 0.75 step2:计算整数部分 整数部分是 15,计算得 1111,见下图: step3:计算小数部分 小数部分是 0.75,计算得 0.11,见下图: step4:合并 将整数部分和小数部分拼接得到最终的结果:1111.11 复原:1111.11 -> 15.75 step1:拆分 将整数和小数部分拆分得:1111 和 0.11 s..
JAVA double精度丢失问题
雨汨的博客
05-11 4377
针对十进制,1除以3是除不尽的。很好理解,因为我们一直接触的就是十进制,等于0.333333…十进制 转二进制(每次将小数部分乘2,取出整数部分,如果小数部分为0,就可以停止这个过程):十进制0.1。0.1*0.1使用计算计算是0.01,代码里却是0.010000000000000002。在商城里面计算订单金额的候,我们就不得不解决这个问题了,这候就用到了。但是:二进制系统中无法精确地表示分数 1/10。《Java核心技术卷》书上也是这么写的。因为计算机只能识别0和1,即二进制,
BigDecimal使用不当,造成P0事故
yanglingzhi888的博客
06-19 241
我们在使用金额计算或者展示金额的候经常会使用BigDecimal,也是涉及金额非常推荐的一个类型,BigDecimal自身也提供了很多构造器方法,这些构造器方法使用不当可能会造成不必要的麻烦甚至是金额损失,从而引起事故资损。接下来我们看下收银台出的一起事故。收银台计算商品金额报错,导致订单无法支付。P013:44 接到报警,订单支付失败,支付可用率降至60%13:50 迅速回滚上线代码,恢复正常;14:20 review代码,预发布验证发现问题点14:58 修改问题代码上线,线上恢复首先我们先用一段代码
java实现double解决科学计数法并保留两位小数
qq_30114277的博客
03-17 1106
java 解决下发文件金额过大问题导致科学计数法显示,并保存两位小数 new BigDecimal(String.valueOf(double 123.123)).setScale(2,RoundingMode.HALF_UP).toPlainString()
java解决数字太大自动转为科学计数法问题
04-29
Java中处理大数的候,有候会出现数字太大而自动转为科学计数法问题。这种情况下,我们可以使用BigDecimal类来避免这个问题。 BigDecimal类是Java中用来处理大数的类,可以扩展长度和精度,因此可以解决数字太大的问题。使用BigDecimal类可以避免Java在处理大数自动将其转换为科学计数法。 例如,我们要计算1到100的阶乘之和,如果用普通的数据类型来处理,很容易就会出现数字太大的问题。但是使用BigDecimal类就可以轻松处理。 代码示例如下: ``` import java.math.BigDecimal; public class BigNumber { public static void main(String[] args) { BigDecimal sum = new BigDecimal(0); for (int i = 1; i <= 100; i++) { sum = sum.add(factorial(i)); } System.out.println(sum); } public static BigDecimal factorial(int n) { BigDecimal result = new BigDecimal(1); for (int i = 1; i <= n; i++) { result = result.multiply(new BigDecimal(i)); } return result; } } ``` 上述代码使用BigDecimal类来计算阶乘,并将结果累加到sum中,最终输出结果。可以看到,使用BigDecimal类可以轻松处理大数问题,避免了数字太大自动转为科学计数法问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • iframe或者window.open()添加请求头方法 25336
  • 将JAR包反编译,修改后重新打包 22687
  • eclipse 执行main方法 错误: 找不到或无法加载主类 21961
  • 在html中让一个text输入框的默认日期是今天 20749
  • 下载maven JAR包太慢?各种方法解决。不再为此烦恼! 16859

分类专栏

  • 大数据 6篇
  • 服务器部署 2篇
  • 工具使用 24篇
  • 前端 8篇
  • java 34篇
  • 数据库 3篇
  • 反向代理服务器Nginx 1篇

最新评论

  • IDEA 设置字体大小无效

    紫龙er: 感谢你为我提供了参考操作,亲测确实是需要修改主题设置

  • 比较2个字符串的相似度

    Ares_2020: 英文和数字怎么能不处理呢???

  • 通过ip获取地理位置信息

    dmlcq: 哈哈,被你看出来了,确实参考了GPT

  • 通过ip获取地理位置信息

    weixin_46850844: 像极了GPT的“需要注意的是”

  • idea 提示Expecting newline or semicolon解决办法

    alice0217: 请问你最后解决了吗?我现在也有这个问题

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 判断时间差是否大于1年,需考虑闰年
  • stream流并结合anyMatch()方法的用法
  • 通过ip获取地理位置信息
2023年9篇
2022年4篇
2021年20篇
2020年5篇
2019年11篇
2018年10篇
2017年17篇
2016年13篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dmlcq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司东莞关键词排名福永百度关键词包年推广坂田英文网站建设坂田如何制作网站同乐关键词按天计费平湖网站搭建石岩关键词按天收费福永企业网站设计福田百度seo永湖网站优化按天计费福永网站设计模板大芬seo优化福永百搜标王松岗外贸网站设计宝安企业网站建设横岗网站优化按天扣费大鹏网站优化按天计费爱联模板推广同乐至尊标王大浪标王罗湖关键词按天计费福田网站优化排名平湖标王荷坳网站制作罗湖seo网站推广民治seo网站优化塘坑关键词按天收费沙井企业网站制作西乡高端网站设计荷坳外贸网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化