将价格改为:29、39、49、59、69、79、89或99。
例如:如果价格是2018 = 2029
或者如果价格是1051,那么标记为:1059
看起来很简单。将数字分成两部分(下面的伪代码):
remainder = number % 100 # gives 0 thru 99 inclusive
hundreds = number - remainder # give x00, where x is any sequence of digits.
然后像这样调整剩余部分:
if remainder <= 29: remainder = 29
else if remainder <= 39: remainder = 39
else if remainder <= 49: remainder = 49
else if remainder <= 59: remainder = 59
else if remainder <= 69: remainder = 69
else if remainder <= 79: remainder = 79
else if remainder <= 89: remainder = 89
else: remainder = 99
然后重新组合:
number = hundreds + remainder
如果您愿意,您可以将中间位简化为表达式,但是,根据业务逻辑,如果边界变为.29
, .37
, .53
(或任何不能立即适用于公式的内容),则最好保持原样。
作为示例,这里有一些Python代码(最终的伪代码语言)可以满足您的要求:
def adjust (n):
r = n % 100
n = n - r
if r <= 29: r = 29
elif r <= 39: r = 39
elif r <= 49: r = 49
elif r <= 59: r = 59
elif r <= 69: r = 69
elif r <= 79: r = 79
elif r <= 89: r = 89
else: r = 99
return n + r
print "%4d -> %4d'n" % (1562, adjust(1562))
for i in range (89,190):
print "%3d -> %3d" % (i, adjust(i))
输出如预期:
1562 -> 1569
89 -> 89
90 -> 99
91 -> 99
92 -> 99
93 -> 99
94 -> 99
95 -> 99
96 -> 99
97 -> 99
98 -> 99
99 -> 99
100 -> 129
101 -> 129
102 -> 129
103 -> 129
104 -> 129
105 -> 129
106 -> 129
107 -> 129
108 -> 129
109 -> 129
110 -> 129
111 -> 129
112 -> 129
113 -> 129
114 -> 129
115 -> 129
116 -> 129
117 -> 129
118 -> 129
119 -> 129
120 -> 129
121 -> 129
122 -> 129
123 -> 129
124 -> 129
125 -> 129
126 -> 129
127 -> 129
128 -> 129
129 -> 129
130 -> 139
131 -> 139
132 -> 139
133 -> 139
134 -> 139
135 -> 139
136 -> 139
137 -> 139
138 -> 139
139 -> 139
140 -> 149
141 -> 149
142 -> 149
143 -> 149
144 -> 149
145 -> 149
146 -> 149
147 -> 149
148 -> 149
149 -> 149
150 -> 159
151 -> 159
152 -> 159
153 -> 159
154 -> 159
155 -> 159
156 -> 159
157 -> 159
158 -> 159
159 -> 159
160 -> 169
161 -> 169
162 -> 169
163 -> 169
164 -> 169
165 -> 169
166 -> 169
167 -> 169
168 -> 169
169 -> 169
170 -> 179
171 -> 179
172 -> 179
173 -> 179
174 -> 179
175 -> 179
176 -> 179
177 -> 179
178 -> 179
179 -> 179
180 -> 189
181 -> 189
182 -> 189
183 -> 189
184 -> 189
185 -> 189
186 -> 189
187 -> 189
188 -> 189
189 -> 189
在浮点数的情况下,它将不起作用。
首先需要检查value是整数(十进制)还是浮点数。在此之后,您需要相应地处理逻辑。
创建如下函数:
function addVal($price){
$price = 10.50;
if(is_float($price)){
$whole = floor($price); // 1
$fraction = $n - $whole;
$final = getVal($whole,$fraction);
}else{
$final = getVal($price);
}
return $final;
}
function getVal($price,$fraction=0){
// your logic goes here
if($fraction!=0){
// add fractional part to price after applying logic
}
return $price;
}
对
需要使用上面所示的substr函数比较最后两个值。然后检查最接近的可能值的条件。好了。做。
if (substr($price, -2) <= 29) {
$price = substr($price, 0, -2) . 29;
}
else if (substr($price, -2) <=39) {
$price = substr($price, 0, -2) . 39;
}
等等....
干杯…
试试这个:
if (substr($price, -2) >= 20) {
$price = substr($price, 0, -1) . 9;
}
else {
$price = substr($price, 0, -2) . 29;
}
参见demo更新了多个示例
在评论中更新@HankyPanky的建议。为了更简单,使用三元操作符:
$price = substr($price,-2) >= 20 ? substr($price,0,-1) . 9 : substr($price,0,-2) . 29;
您可以通过使用php的round函数来创建php函数
一切正常。我已经在本地服务器上测试过了。
<?php
$variable=1255;
$len=strlen ( $variable );
$last_2nd=substr($variable,$len-2,1);
if ($last_2nd==1)
$last_2nd=2;
$last=substr($variable,$len-1,1);
$last=$last+(9-$last);
$variable=substr($variable,0,$len-2).$last_2nd.$last;
echo $variable;
?>