ما هو هذا في كولد فيوجن DecimalFormat() وظيفة ؟ كيف يمكنني الحصول على النتيجة الصحيحة?

StackOverflow https://stackoverflow.com/questions/1428173

  •  07-07-2019
  •  | 
  •  

سؤال

<cfset number1 = 20.5/80 * 100 />
<cfset number2 = 18.125 />
<cfset number3 = 6.875 />

<cfoutput>
DecimalFormat(#number1#): #DecimalFormat(number1)#<br />
DecimalFormat(#number2#): #DecimalFormat(number2)#<br />
DecimalFormat(#number3#): #DecimalFormat(number3)#
</cfoutput>

النواتج:

DecimalFormat(25.625):25.62

DecimalFormat(18.125):18.13

DecimalFormat(6.875):6.88

بدلا من OUTPUTING:

DecimalFormat(25.625):25.63 ميغا

DecimalFormat(18.125):18.13

DecimalFormat(6.875):6.88

يبدو أن هذا المتغير هو نتيجة حسابية يجعل DecimalFormat() تتصرف بشكل مختلف.أي حل سريع ، دون البحث في جافا ؟

هل كانت مفيدة؟

المحلول

أعتقد أن المشكلة ليست DecimalFormat(), لكن نموذجية النقطة العائمة أخطاء التقريب.

انظر: PrecisionEvaluate()

نصائح أخرى

DecimalFormat هو التنسيق وظيفة.لا وظيفة الرياضية.وظيفته ليست في الجولة رقم ، للأسف را يفتقر جيدة وظائف رياضية العشرية لذلك سوف تضطر إلى الكتابة الخاصة بك.

هنا هو واحد كتب أحدهم على را livedocs الصفحة الجولة():

 <cffunction name="roundDecimal" returntype="numeric"> 
     <cfargument name="num" type="numeric" required="yes"> 
     <cfargument name="decimal" type="numeric" default="2" required="no"> 

     <cfreturn round(num*10^decimal)/10^decimal /> 
  </cffunction>

حل سريع تغيير خط 1 number1 = NumberFormat(20.5/80 * 100,'9.999')

يرجى الاطلاع راجع وثائق أسلوب numberformat و هل صفحة البحث في جولة لمعرفة بعض المعلومات المحددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top